2010-08-09 82 views
2

我有一个用户抱怨说,我的应用程序需要大量的CPU时间,它应该是空闲的。这是Mac OS Leopard上的Cocoa应用程序。我喜欢做的是有一个后台线程定期抓取主线程的堆栈跟踪并记录它们。或者,如果我可以让他运行一个命令行程序来抓取所有线程的堆栈(或者更好的是,具有CPU分析信息的调用图),他可以做到这一点,并向我发送结果。我知道XCode内置了CPU配置文件,但这个问题只能在用户的机器上重现,所以XCode不是一个选项(我不想让他安装它)。中央处理器剖析可可应用程序在现场

我找不到一个可以在OSX上转储堆栈跟踪的命令行工具,也不能找到访问其他线程堆栈的API。我猜GDB可以做到这一点,但这很难向用户解释。

回答

2

告诉您的用户启动Activity Monitor(在/ Applications/Utilities中)。在活动监视器中,用户可以选择与您的应用程序相对应的行,然后按工具栏中的“示例”按钮。这将需要10秒的应用程序样本。然后,他可以将其保存到磁盘并通过电子邮件发送给您。

编辑:如果您需要此命令行版本,请查看/ usr/bin/sample。它确实有效,但活动监视器对于最终用户来说应该更容易使用。

+0

这很完美。谢谢,凯文! – George 2010-08-09 23:07:37