我想使用this answer中描述的随机抽样在Linux上分析C ++程序:
但是,如果你匆忙,你可以手动打断你的 调试器下的程序虽然主观上很慢,但是还有 找到性能问题的简单方法。
问题在于我无法使用gdb调试器,因为我想在负载很重的情况下对生产进行分析,调试器过于干扰并且大大减慢了程序的速度。但是,我可以使用perf record
和perf report
来查找瓶颈,而不会影响程序性能。有没有办法用perf而不是gdb收集许多可读(gdb like)堆栈跟踪?
答案 0 :(得分:0)
next_ts
确实提供了三种不同技术的callstack录音
perf
)。这通常得到支持并且运行良好,但它不适用于某些优化。使用fp
等编译您的应用程序,以确保它运行良好。-fno-omit-frame-pointer
使用每个样本的袋子转储进行后处理。这有很大的性能损失dwarf
。可以使用lbr
或perf
等perf report
分析工具访问堆栈。
有关详细信息,请查看perf script
。