75

我正在尝试在我的 mac(os x Lion)上分析一些 c++ 代码,但我找不到任何有用的东西。我正在寻找一个分析器,它会告诉我哪些函数占用了我的 cpu 时间(类似于 matlab 分析器)。

这是我尝试过的

  • 教授。这是我在我的 linux 机器上使用的,但它只是在我的 mac 上给了我空输出(显然是一个已知问题)
  • 仪器。我一生都无法弄清楚如何在我编译的二进制文件中分析任何内容。我也找不到任何有用的教程。
  • (其他搜索发现 Shark 不再可用,而 Valgrind 用于记忆)。

真的很感谢帮助!

4

3 回答 3

120

Instruments 是使用的工具。Instruments 的完整解释超出了此答案的范围,但这里有一个快速入门指南:

  1. 打开仪器。1
  2. 选择“时间分析器”模板。
  3. 在“目标”下拉菜单中选择您的应用程序。2
  4. 点击红色圆圈(“记录”)按钮开始运行您的应用程序。
  5. 如果适用,请在您的应用程序中做一些您需要分析的事情。
  6. 再次点击录制按钮停止录制。
  7. 使用 Instruments 中的工具来分析您的结果。

在可用的工具中,最常用的是:

  • 使用披露箭头扩展调用树
  • 单击函数名称上的带圆圈的箭头将其聚焦
  • 双击函数查看关联源
  • 左侧的“反转调用树”复选框

您还可以instruments在命令行上启动 的调用:

instruments -l 30000 -t Time\ Profiler -p 5773

说明


1打开 Instruments 的一种简单方法是使用 Spotlight:只需单击任务栏右上角(时钟旁边)的放大镜,然后键入“Instruments”。

2单击“选择目标...”并导航到可执行文件的路径。

于 2012-07-12T05:58:01.123 回答
9

Instruments 是使用的工具。要克服空白跟踪的问题,请确保从 XCode 中打开 Instruments:

Xcode > Open Developer Tool > Instruments

如果您从上次更新 XCode 之前固定到 Dock 的旧 Instruments 图标打开 Instruments,它将为您提供空白跟踪。

于 2014-12-04T23:01:48.023 回答
8

Instruments 确实是正确的答案,但如果您不知道如何使用它,那么另一个选项是内置 Activity Monitor 应用程序中的分析器。在活动监视器中,您可以获得有关任何正在运行的进程的信息,并且有一个按钮可以对其执行进行一段时间的采样。您必须启动程序,切换到活动监视器,找到进程,然后对其进行采样。

此外,您可以简单地通过在调试器中运行程序并手动暂停它六次左右并在那些时候注意调用堆栈来进行“穷人的分析”。它非常简单,但作为大部分程序的第一次通过,它的效果却出奇的好。

还有一个命令行sample程序可以像其他程序一样对调用堆栈进行采样。

于 2013-03-15T20:01:28.067 回答