ltrace 的替代方案适用于与“-z now”链接的二进制文件?
Alternative to ltrace that works on binaries linked with `-z now`?
,这是我的 Ubuntu 19.10 系统的默认值。它仅适用于与 -z lazy
.
链接的二进制文件
是否有替代 ltrace
的替代方案,它可以完成相同的工作,但也适用于 now
二进制文件?
您可以使用 Namhyung 编写的 uftrace 实用程序
金。它以 软件包的形式提供
在 Ubuntu 虽然我建造了
手动来自 master 分支的代码以确保我使用最新的
香草版。例子 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.
-z lazy
.
是否有替代 ltrace
的替代方案,它可以完成相同的工作,但也适用于 now
二进制文件?
您可以使用 Namhyung 编写的 uftrace 实用程序
金。它以 软件包的形式提供
在 Ubuntu 虽然我建造了
手动来自 master 分支的代码以确保我使用最新的
香草版。例子 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.