【问题标题】:bpftrace: uprobe target file does not exist or is not executablebpftrace:uprobe 目标文件不存在或不可执行
【发布时间】:2020-04-16 03:56:49
【问题描述】:

我想使用 bpftrace 来跟踪 libasan 库中的函数,该库位于 /usr/lib/x86_64-linux-gnu/ 中。

然而

sudo bpftrace -e 'uretprobe:/usr/lib/x86_64-linux-gnu/libasan.so.4: __interceptor_malloc { printf("pid: %d, malloc %p\n", pid, retval); }'

给出错误:uprobe target file '/usr/lib/x86_64-linux-gnu/libasan.so.4' does not exist or is not executable

我尝试过:export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib",但没有帮助。

如何使库对 bpftrace 可执行?我需要它来跟踪在 Firefox 进程中完成的分配。谢谢!

编辑:我刚刚发现libasan的权限是-rw-r--r--,这意味着它确实是不可执行的。我应该如何使它可执行?

【问题讨论】:

  • 您需要在您的LD_LIBRARY_PATH 中包含/usr/lib/x86_64-linux-gnu,对吗?祝你好运。
  • @shellter,好点子。我试过:export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu" 但 bpftrace 给出了同样的错误。
  • 您使用的是我不熟悉的工具。我会寻找这些工具的开发者论坛。祝你好运。
  • 重新权限。可能需要。无论如何,尝试它不会有什么坏处;-)。祝你好运,k。
  • 在我的系统(Ubuntu 18.04)上,/usr/lib/x86_64-linux-gnu/libasan.so.4 不是二进制文件,而是指向同一目录中libasan.so.4.0.0 的符号链接。如果您有类似的设置,也许尝试传递后者而不是符号链接?

标签: linux address-sanitizer bpf dynamic-analysis bcc-bpf


【解决方案1】:

我通过 chmod +x libasan.so.4.0.0 修复了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多