答案 0 :(得分:8)
扩展另一个答案,我使用valgrind(http://valgrind.org)的'callgrind'选项。然后从KDE安装kcachegrind以获得一个漂亮的GUI界面。
作为假人的教程,请执行:
1)使用调试信息编译应用程序。尝试使用开启和关闭优化进行分析是一个好主意,通过优化,您将获得更多信息,但可能不太准确(特别是微小功能似乎会花费比他们应得的更多时间。
2)运行:
valgrind --tool=callgrind <name of your app> <your app's options>
这应生成一个名为'callgrind.something'的文件,您可以将其加载到kcachegrind中。
您还可以查看:
valgrind --tool=cachegrind <name of your app> <your app's options>
这将为您提供有关您的应用如何与CPU缓存交互的信息。
请注意,虽然valgrind和鲨鱼看起来像类似的应用程序,但它们的工作方式却截然不同。当您在valgrind中运行应用程序时,它将比正常情况慢很多倍(通常慢40倍),但您得到的结果比鲨鱼更准确。我倾向于使用两者,所以我可以获得尽可能多的信息!
答案 1 :(得分:5)
你可以试试Valgrind(http://valgrind.org/)。它们具有运行时和编译时分析工具。
答案 2 :(得分:5)
回答这个问题有点迟,但最接近的答案是Zoom。一些Shark团队正在研究它。
答案 3 :(得分:2)
OProfile是一个工具,可以对您的应用程序及其进行的系统调用进行基于抽样的分析。这样可以查看有关花费时间的详细信息。它没有GUI,但有几个前端可以让你处理运行中的信息。
我已广泛使用它,包括桌面应用程序和嵌入式系统。解释结果需要花费一点力气,但是调用图输出在这里非常有用。