相关疑难解决方法(0)

在Linux中跟踪本地函数调用的工具

我正在寻找像ltracestrace这样的工具,它可以跟踪可执行文件中的本地定义函数.ltrace仅跟踪动态库调用,而strace仅跟踪系统调用.例如,给定以下C程序:

#include <stdio.h>

int triple ( int x )
{
  return 3 * x;
}

int main (void)
{
  printf("%d\n", triple(10));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行程序ltrace将显示调用,printf因为这是一个标准库函数(我的系统上是一个动态库),strace并将显示启动代码,用于实现printf的系统调用和关闭代码的所有系统调用,但我想要一些能告诉我函数triple被调用的东西.假设优化编译器没有内联本地函数,并且二进制文件没有被剥离(符号被删除),是否有工具可以做到这一点?

编辑

几点澄清:

  • 如果该工具还提供非本地功能的跟踪信息,那也没关系.
  • 我不想重新编译支持特定工具的程序,可执行文件中的符号信息应该足够了.
  • 如果我可以使用该工具附加到现有的进程,就像我可以使用ltrace/strace一样,我会非常高兴.

linux debugging trace

58
推荐指数
5
解决办法
6万
查看次数

标签 统计

debugging ×1

linux ×1

trace ×1