在mac os x上分析c ++

fog*_*ges 60 macos profiling

我试图在我的mac(os x Lion)上描述一些c ++代码,但我找不到任何有用的东西.我正在寻找一个能够告诉我什么函数占用我的CPU时间的探查器(类似于matlab探查器).

这是我尝试过的

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

真的很感激帮助!

dus*_*uff 100

仪器是使用的工具.对仪器的完整解释超出了本答案的范围,但这是一个快速入门指南:

  1. 打开仪器.1
  2. 选择"Time Profiler"模板.
  3. 在"目标"下拉菜单中选择您的应用程序.2
  4. 点击红色圆圈("记录")按钮开始运行应用程序.
  5. 如果适用,请在您的应用程序中执行一些您需要配置的内容.
  6. 再次按下录制按钮以停止录制.
  7. 使用Instruments中的工具分析结果.

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

  • 使用公开箭头扩展调用树
  • 单击函数名称上带圆圈的箭头以对其进行聚焦
  • 双击某个功能以查看关联的源
  • 左侧的"反向调用树"复选框

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

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

  • 仅供参考,我刚学习了`iprofiler` CLI工具来收集可以使用Instruments应用程序查看的痕迹.发现它并不容易,因为`man -k profiler`不会在结果中包含它. (3认同)
  • 2022 年你好。我在 macOS 12.1 上运行,找不到命令行程序“instruments”。知道苹果把它移到哪里了吗? (3认同)
  • 这也可以从命令行使用,作为“工具”。例如,`instruments -t "Time Profiler" ./a.out foo.txt 20` — 这比在 GUI 中设置参数和工作目录更容易。之后,可以通过 Instruments GUI 打开生成的“instrumentscli0.trace”,甚至可以通过命令行完成(在 GUI 中打开):“open -a Instruments Instrumentscli0.trace” (2认同)

bam*_*s53 5

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

此外,您只需在调试器中运行程序并手动暂停六次左右并在这些时间记下调用堆栈,就可以执行"穷人的分析".它非常简单,但作为大部分程序的首次通过,效果出奇的好.


chu*_*ney 5

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

Xcode > Open Developer Tool > Instruments
Run Code Online (Sandbox Code Playgroud)

如果您在上次更新XCode之前从固定到扩展坞的旧仪器图标打开仪器,它将为您提供空白跟踪.

  • 这似乎是现在启动 Instruments 的唯一方法(当然除了命令行)。最近的操作系统升级后,它不再出现在聚光灯下。不确定什么时候改变了。 (3认同)