0

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

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

4

1 回答 1

0

我不知道如何用 perf 做到这一点,但还有其他方法。如果 gdb 合适,则使用它。如果由于性能问题而适用,则使用 SystemTap:

1)您的预编译二进制文件具有调试信息,您可以使用 gdb 只需附加到正在运行的进程,放置断点并可能为其添加命令:break your_function command info args continue end

2)您的预编译二进制文件没有调试信息,您可以使用 gdb 在这种情况下,您需要知道调用对流。例如对于 x64_86 break your_function command info register rdi continue end

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$$) }
于 2013-12-18T09:21:51.080 回答