7

Mac OS X 上的Shark是一个很好的工具,用于分析正在运行的系统上的应用程序。Linux 有没有类似的工具?

OProfile看起来可以,有人用过吗?

4

4 回答 4

9

扩展另一个答案,我使用 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 倍以上),但您获得的结果比鲨鱼的要准确得多。我倾向于使用两者,所以我可以获得尽可能多的信息!

于 2008-12-02T17:48:22.407 回答
5

你或许可以试试 Valgrind ( http://valgrind.org/ )。他们有运行时和编译时分析工具。

于 2008-10-20T09:40:39.400 回答
5

A bit late to answer this one, but the closest answer is Zoom. Some of the Shark team worked on it.

于 2010-12-07T10:34:57.843 回答
4

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.

于 2008-12-03T03:26:40.430 回答