【问题标题】:strace: print path instead of addressstrace:打印路径而不是地址
【发布时间】:2017-04-21 09:44:38
【问题描述】:

我正在使用 strace 来查找我的程序中可能出现的错误,并且我有以下输出:

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

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

【问题讨论】:

  • strace 是否总是在您的系统上执行此操作,还是仅对您的程序执行此操作?因为每当我使用它时,它总是将open 的第一个参数显示为字符串。
  • 不,对于其他调用——比如动态链接——strace 会显示字符串。此输出中的打开跟踪来自我正在使用的库,而不是来自我自己的代码。

标签: c strace


【解决方案1】:

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

77  65  73  3c
 w   e   s   <

您以某种方式从字符串中提取了 4 个字节,并将它们误解为指针。

至少它看起来是这样的。有一件事我无法解释,那就是你如何得到 EACCES 而不是 EFAULT。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 2016-02-26
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2016-07-04
    相关资源
    最近更新 更多