在Linux上使用线程化C ++应用程序

我曾经用gprof来完成我所有的Linux分析。

但是,使用我的多线程应用程序,它的输出看起来不一致。

现在,我挖了这个:

http://sam.zoy.org/writings/programming/gprof.html

但是,从很久以前,在我的gprof输出中,似乎我的gprof列出了非主线程使用的函数。

所以,我的问题是:

1)2010年,我可以轻松使用gprof来分析多线程Linux C ++应用程序吗? (Ubuntu 9.10)2)我应该考虑哪些其他工具来进行分析?


编辑:在穷人的分析器上增加了另一个答案,这对于多线程应用程序来说更好。

看看oprofile。 此工具的分析开销可以忽略不计,它支持多线程应用程序---只要您不想分析互斥量争用(这是分析多线程应用程序的一个非常重要的部分)


Paul R说,看看Zoom。 您也可以使用lsstack ,与gprof相比,这是一种低技术方法,但效果惊人。

补充:既然你澄清说你在33ms运行OpenGL,我之前的建议就是这样。 另外,我个人在这种情况下所做的事情既有效又不直观。 只需让它运行一个典型或有问题的工作负载,然后只需手动停止它,并查看它在做什么以及为什么。 多次这样做。 现在,如果它只是偶尔行为不当,你只希望在行为不当时停下来。 这并不容易,但我已经使用了一个闹钟时钟中断来设置正确的延迟时间。 例如,如果100帧中的一帧超过33ms,则在帧开始时,将计时器设置为35ms,并在帧结束时将其关闭。 这样,它只会在代码花费太长时间才会中断,并且会告诉你为什么。 当然,一个样本可能会错过有罪代码,但有20个样本不会错过它。


看看Valgrind。

链接地址: http://www.djcxy.com/p/6887.html

上一篇: threaded C++ application on Linux?

下一篇: What are the new features in C++17?