我正在寻找可以跟踪可执行文件中本地定义的函数的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一样使用该工具附加到现有进程,我将非常好。
www说
茅侃侃