我有一个使用 Qt 用 C++ 编写的中型应用程序。我想对事物进行分析以查看性能最低的代码在哪里,所以我用-pg
.
但是,我的应用程序使用了许多使用 QTPlugin 机制的插件(归结为每个插件的实例对象的 dlopen 和 dlsym)。我注意到 gprof 似乎不包含插件中的函数。
是的,插件也被编译了-pg
。有什么特别的事情我必须做的吗?还是我错过了一些简单的东西?
如果可以使用的话,我认为Valgrind 的callgrind 只需要调试符号(-g)来分析代码。不过,我不确定它是否适用于动态链接的对象。
正如 strager 所说,Valgrind(以 kcachegrind 作为查看器的 callgrind)是一个不错的选择。您也可以尝试使用http://oprofile.sourceforge.net/