ltrace
不适用于与-z now
option链接的二进制文件,这是我的 Ubuntu 19.10 系统上的默认设置。它仅适用于与-z lazy
.
是否有任何替代方法可以ltrace
完成相同的工作,但now
也适用于二进制文件?
ltrace
不适用于与-z now
option链接的二进制文件,这是我的 Ubuntu 19.10 系统上的默认设置。它仅适用于与-z lazy
.
是否有任何替代方法可以ltrace
完成相同的工作,但now
也适用于二进制文件?
您可以使用Namhyung Kim 编写的 uftrace 实用程序。尽管我从 master 分支手动构建了代码以确保我使用最新的 vanilla 版本,但它在 Ubuntu 中作为一个包提供。示例main.c
:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World");
return EXIT_SUCCESS;
}
构建-z now
:
gcc -O2 main.c -z now -o main
ltrace
不起作用:
$ ltrace ./main
Hello World
+++ exited (status 0) +++
但是uftrace
:
$ LD_LIBRARY_PATH=~/uftrace/libmcount ~/uftrace/uftrace -a --force ./main
Hello World
# DURATION TID FUNCTION
58.231 us [ 16283] | puts("Hello World") = 12;
在 Github 上的项目站点上查看此线程:即使没有 PLT #592,也可以跟踪库调用。