好c++ GCC 分析器
我试图找到一个相关的问题,但之前的所有问题都是关于 Windows 中本机 C++ 的分析器。我用谷歌搜索了一段时间并了解了 gprof,但 gprof 的输出实际上包含许多晦涩的内部函数。是否有一个好的开源 C++ 分析器和良好的文档?
I tried to find a related question but all previous questions are about profilers for native c++ in windows. I googled a while and learned about gprof, but the output of gprof actually contained lot of obscure internal functions. Is there a good opensource c++ profiler with good documentation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
Valgrind
我完全推荐这个
http://en.wikipedia.org/wiki/Valgrind
Valgrind
I totally recommend this
http://en.wikipedia.org/wiki/Valgrind
不要使用 gprof,出于此处给出的原因。
您需要的是堆栈快照,在此处进行了解释。拍摄 stackshot 的一种方法是使用 pstack 实用程序。另一种方法是在调试器下使用“Pause”或 ctrl-break。还有lsstack,如果你能得到一份副本的话。
如果你想花钱,RotateRight 是一个基于堆栈采样的不错工具,称为 Zoom。
Don't use gprof, for the reasons given here.
What you need are stackshots, explained here. One way to take stackshots is the pstack utility. Another way is to use "Pause" or ctrl-break under the debugger. Also lsstack, if you can get a copy.
If you want to spend money, RotateRight makes a nice tool based on stack sampling called Zoom.
使用标志
-pg
进行编译并使用gprof
。Compile using the flag
-pg
and usegprof
.如果您不介意 KDE 库依赖项,KCachegrind 对于添加的功能非常有用可视化。正如人们可能猜到的那样,它取决于 Callgrind 和 Valgrind,因此在编译时不需要特殊的编译器标志。
If you don't mind the KDE library dependencies, KCachegrind is very useful with the added visualization. It depends on Callgrind and Valgrind, as one could have guessed, so no special compiler flags required during compile-time.
我听说 oprofile 对于实时应用程序来说真的非常非常好。不过,仅限 Linux,据我所知。
I've heard oprofile is really, really good for real time apps. Linux only though, AFAIK.
您的个人资料报告需要多少详细信息。如果您只想对几个函数进行一些非常简单的时间分析,那么通过 C++11 chrono 类提供的新功能可以轻松地以跨平台、跨编译器的方式进行分析。
请参阅这篇文章< /a> 一些简单的分析代码,其工作方式与 Matlab 超级易于使用的
tic
和toc
函数类似。How much detail do you need in your profile reports. If you just want to do some really simple time profiling for a few functions, then the new functionality available via the C++11
chrono
classes makes it easy to profile in a cross platform, cross compiler way.See this article for some simple profiling code that works similarly to Matlab's super easy to use
tic
andtoc
functions.