【发布时间】:2010-12-30 05:17:30
【问题描述】:
我试图找到一个相关的问题,但之前的所有问题都是关于 Windows 中本机 c++ 的分析器。我搜索了一段时间并了解了 gprof,但 gprof 的输出实际上包含许多晦涩的内部函数。有没有好的开源 c++ profiler 和好的文档?
【问题讨论】:
-
您也可以尝试使用code.google.com/p/profiny 进行手动分析,与其他工具相比,它的开销应该非常小。
我试图找到一个相关的问题,但之前的所有问题都是关于 Windows 中本机 c++ 的分析器。我搜索了一段时间并了解了 gprof,但 gprof 的输出实际上包含许多晦涩的内部函数。有没有好的开源 c++ profiler 和好的文档?
【问题讨论】:
Valgrind
【讨论】:
不要使用 gprof、for the reasons given here。
您需要的是堆栈截图,explained here。 pstack 实用程序是获取堆栈快照的一种方法。另一种方法是在调试器下使用“暂停”或 ctrl-break。还有 lsstack,如果你能得到一份副本的话。
如果你想花钱,RotateRight makes a nice tool based on stack sampling called Zoom。
【讨论】:
使用标志-pg编译并使用gprof。
【讨论】:
如果您不介意 KDE 库依赖项,KCachegrind 对于添加的可视化非常有用。这取决于 Callgrind 和 Valgrind,正如人们可能已经猜到的那样,因此在编译时不需要特殊的编译器标志。
【讨论】:
我听说 oprofile 非常非常适合实时应用程序。不过仅限 Linux,AFAIK。
【讨论】:
您的个人资料报告中需要多少详细信息。如果您只想对几个函数进行一些非常简单的时间分析,那么通过 C++11 chrono 类提供的新功能可以轻松地以跨平台、交叉编译器的方式进行分析。
请参阅this article 了解一些与 Matlab 超级易用的 tic 和 toc 函数类似的简单分析代码。
【讨论】: