使用perf进行应用程序例程跟踪

时间:2013-12-02 12:13:35

标签: linux debugging arguments perf

是否可以使用linux perf工具捕获预编译二进制文件中的用户空间函数的参数?我无法通过文档或谷歌来解决这个问题?

如果没有其他建议? 感谢...

1 个答案:

答案 0 :(得分:0)

我不知道怎么用perf做,但还有其他方法。如果gdb合适,那么使用它。如果它适用于例如性能问题,则使用SystemTap:

1)您的预编译二进制文件具有调试信息,您可以使用gdb    只需附加到正在运行的进程,放置断点并可能为它添加命令:    打破你的功能    命令    信息args    继续    端

2)您的预编译二进制文件没有调试信息,您可以使用gdb    在这种情况下,您需要知道呼叫对话。例如,对于x64_86    打破你的功能    命令    信息寄存器rdi    继续    端

3)你的预编译二进制文件有调试信息,你不能使用gdb但可以使用SystemTap    然后是这样的事情:

sudo stap params.stp -x <PID>  'process("your-process-name").function("your_function")'

> cat params.stp

function trace(extra)
{
  printf("params:%s\n", extra)
}

probe $1.call { trace($$parms$$) }