Debugging 如何使用stackshot调试应用程序?

Debugging 如何使用stackshot调试应用程序?,debugging,macos,Debugging,Macos,我最近听说MacOSX上有一个很有用的调试工具,名为stackshot,但我不知道如何调用它。我的理解是,它作为一个守护进程运行,但手册页的内容也可以从命令行调用。如何为当前运行的应用程序利用stackshot sudo /usr/libexec/stackshot -i Stackshot用于调试系统范围内的问题(死锁等),而不是单个应用程序;因此,它创建整个系统的堆栈转储,而不是单个应用程序 在默认配置下,这将在/Library/Logs/stackshot.log中创建堆栈快照。log苹

我最近听说MacOSX上有一个很有用的调试工具,名为
stackshot
,但我不知道如何调用它。我的理解是,它作为一个守护进程运行,但手册页的内容也可以从命令行调用。如何为当前运行的应用程序利用stackshot

sudo /usr/libexec/stackshot -i
Stackshot用于调试系统范围内的问题(死锁等),而不是单个应用程序;因此,它创建整个系统的堆栈转储,而不是单个应用程序


在默认配置下,这将在
/Library/Logs/stackshot.log中创建堆栈快照。log

苹果要求我在iOS设备上生成堆栈快照。要执行此操作,当问题发生时,同时按住并释放主页和音量按钮

然后,将设备与iTunes同步

同步后,stackshot日志文件将存储在计算机上。我不知道它在Windows中的位置,但在Mac上它在:


~/Library/Logs/CrashReporter/MobileDevice//stacks-yyyy-mm-dd-xxxxxx.log

stackshot似乎不再包含在OS X中,至少不包含在10.11中。但是,您仍然可以使用/usr/bin/sample工具对应用程序进行采样

这也可以使用活动监视器进行访问:

  • 打开活动监视器
  • 双击你的应用程序
  • 单击左下角的示例按钮

  • 这将允许您查看应用程序中当前发生的情况,这样您就可以调试CPU使用问题,而无需从Xcode运行应用程序。

    谢谢;我发现如果您将
    -p pid
    添加到命令行,您可以使用stackshot(sic)单个应用程序来检查其中的死锁。在我的
    /usr/libexec
    中没有
    stackshot
    。我在10.11.3活动监视器的输出看起来很奇怪。我能找个线索吗?