2017-04-21 53 views
0

我使用strace的找到我的程序可能出现的错误,我有这样的输出:strace的:打印路径,而不是地址

open(0x7765533c, O_RDONLY) = -1 EACCES (Permission denied) 

如何获得存储的值在这个地址或者如何告诉strace的到打印路径参数?

+0

strace是否总是在您的系统上执行此操作,或者只是为您的程序执行此操作?因为每当我使用它时,它总是显示“open”的第一个参数为一个字符串。 –

+0

不,对于其他调用(如动态链接),strace显示字符串。此输出中的开放跟踪来自我正在使用的库,而不是来自我自己的代码。 –

回答

0

strace显示指针值,当它不能显示一个字符串时,因为指针没有指向有效的内存位置。在这种情况下,指针的字节看起来像ASCII一样。

77 65 73 3c 
w e s < 

你莫名其妙地提取从您的字符串4个字节和曲解他们作为一个指针。

至少大部分是它的样子。有一件事我无法解释,这就是你如何得到EACCES而不是EFAULT。