【问题标题】:Using perf for application routine tracing使用 perf 进行应用程序例程跟踪
【发布时间】:2013-12-02 12:13:34
【问题描述】:

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

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

【问题讨论】:

    标签: linux debugging arguments perf


    【解决方案1】:

    我不知道如何使用 perf 但还有其他方法。如果 gdb 合适,则使用它。如果因为性能问题而适用,则使用 SystemTap:

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

    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$$) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多