在 mac os x 上分析 c + +

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

这是我试过的方法

  • 教授。这是我在 linux 机器上使用的,但它只是给我的 Mac 输出空白(显然这是一个已知的问题)
  • 仪器。我无论如何也想不出如何在我编译的二进制文件中分析任何东西。我也找不到任何有用的教程。
  • (其他搜索结果显示,鲨鱼已不复存在,而 Valgrind 只是为了记忆)。
59884 次浏览

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

  1. 开放式仪器 1
  2. 选择“时间分析器”模板。
  3. 在“ Target”下拉菜单中选择您的应用程序
  4. 点击红色圆圈(“记录”)按钮启动您的应用程序运行。
  5. 如果适用的话,在应用程序中做一些需要配置文件的事情。
  6. 再次按下录音按钮停止录音。
  7. 使用 Instruments 中的工具分析结果。

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

  • 使用公开箭头扩展调用树
  • 单击函数名上的圆形箭头以使其聚焦
  • 双击一个函数以查看关联的源
  • 左边的“ Invert Call Tree”复选框

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

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

指示


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

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

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

此外,你可以简单地通过在调试器中运行程序并手动暂停它六次左右,并在这些时候记录调用堆栈来完成“穷人的分析”。它非常简单,但是作为程序的一个重要部分的首次通过,它的工作效果出人意料的好。

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

仪器是使用的工具。 为了解决空白跟踪的问题,请确保从 XCode 中打开 Instruments:

Xcode > Open Developer Tool > Instruments

如果从上次更新 XCode 之前固定在停靠点上的旧 Instruments 图标中打开 Instruments,它将给出空白跟踪。