Mac OS X 上的Shark是一个很好的工具,用于分析正在运行的系统上的应用程序。Linux 有没有类似的工具?
OProfile看起来可以,有人用过吗?
扩展另一个答案,我使用 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 和 Shark 看起来很相似,但它们的工作方式却大不相同。当您在 valgrind 中运行应用程序时,它的运行速度会比正常速度慢很多倍(通常慢 40 倍以上),但您获得的结果比鲨鱼的要准确得多。我倾向于使用两者,所以我可以获得尽可能多的信息!
你或许可以试试 Valgrind ( http://valgrind.org/ )。他们有运行时和编译时分析工具。
A bit late to answer this one, but the closest answer is Zoom. Some of the Shark team worked on it.
OProfile is a tool that does sampling-based profiling of both your application and the system calls it makes. This allows for seeing detailed information about where it's spending time. It doesn't have a GUI, but there are several front-ends that will let you process the information from the runs.
I've used it extensively, both for desktop applications and for embedded systems. It takes a little effort to interpret the results, but the callgraph output is really useful here.