我正在寻找类似于ltrace或strace的工具,可以追踪可执行文件中本地定义的函数。ltrace只能追踪动态库调用,而strace只能追踪系统调用。例如,给定以下C程序:
#include <stdio.h>
int triple ( int x )
{
return 3 * x;
}
int main (void)
{
printf("%d\n", triple(10));
return 0;
}
使用ltrace
运行程序将显示对printf
的调用,因为它是标准库函数(在我的系统上是动态库),而strace
将显示所有启动代码中使用的系统调用,用于实现printf的系统调用以及关闭代码,但我想要一些可以显示被调用的函数triple
的工具。假设本地函数未被优化编译器内联且二进制文件未被剥离(符号已删除),是否有这样的工具?编辑:
一些澄清事项:
- 如果该工具也提供非本地函数的跟踪信息,则可以接受。 - 我不想必须重新编译具有特定工具支持的程序,可执行文件中的符号信息应该足够。 - 如果我可以像使用 ltrace / strace 一样连接到现有进程,那就太好了。