gdb - GDB 是否支持 "run time sampling"或者是否有用户 "extension"支持

标签 gdb profiling

动机:我无法让 google cpu profiler 在运行代码的机器上工作(我最后一口气诅咒 libunwind :)),所以我想知道 gdb 是否支持程序执行的高频随机暂停,存储函数的名称中断发生的地方并计算它在函数 x 中暂停的次数。
这就是我所说的“运行时采样”,可能有更精确/更智能的名称。
我查看了 oprofile,但它很复杂 a) 弄清楚它是否可以做到 b) 弄清楚如何去做
编辑:显然正确的名称是:
《统计抽样法》

EDIT2:我为此提供赏金的原因是我在SO上看到一些人建议手动中断10-20x并使用bt检查堆栈...
说到时间似乎很浪费,所以我猜测一些聪明的人自动化了它。 :)
EDIT3:gprof 不会削减它...我最近尝试在 ARM 系统上运行它,但输出很垃圾... :( 我想它的多线程问题是原因...

最佳答案

您可以通过在运行时暂停 GDB 在 GDB 中手动采样。

你似乎认为你想要的是gprof , 但
如果您的目标是尽可能快地制作程序,那么我建议

  • 高频率的采样没有帮助。
  • 除了在人为的小程序中,计算程序计数器在函数 X 中的样本数没有帮助。

  • 如果您点击该链接,您将看到原因以及如何成功执行此操作的说明。

    关于gdb - GDB 是否支持 "run time sampling"或者是否有用户 "extension"支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282007/

    相关文章:

    algorithm - 软件分析工具

    Java 分析、性能调优和内存分析练习

    c++ - 条件断点失败的 GDB Eigen 调试

    c - 是否可以在 GDB 中修改没有符号表的可执行文件中的变量?

    php imagepng() gdb调试信息

    c++ - 操作简单浪费时间?

    php - AJAX 调用的 Yii SQL 分析

    c++ - 编译后确定静态初始化顺序?

    c++ - 使用 gdb 调试附加进程 - 如何跳出循环

    python - 在每个任务中分析 python fabric 命令