GDB是否支持"运行时采样",或者是否有用户"扩展"来执行此操作

NoS*_*tAl 6 profiling gdb

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

编辑2:为什么我为此提供赏金的原因是我在SO上看到一些人推荐手动中断10-20x并用bt检查堆栈...当谈到时间时似乎非常浪费,所以我猜测一些智能ppl自动化它.:)
EDIT3:gprof不会削减它...我最近在ARM系统上尝试运行它并且输出是垃圾...... :(我猜它多线程的麻烦就是这个原因......

Mik*_*vey 3

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

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

  • 高频率的采样没有帮助。

  • 除非在人为的小程序中,否则计算函数 X 中程序计数器所在位置的样本数没有任何帮助。

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