【发布时间】:2010-08-09 20:54:53
【问题描述】:
我有一位用户抱怨我的应用在本应处于空闲状态时占用了大量 CPU 时间。这是 Mac OS Leopard 上的 Cocoa 应用程序。我想做的是让后台线程定期抓取主线程的堆栈跟踪并记录它们。或者,如果我可以让他运行一个命令行程序来获取所有线程的堆栈(或者更好的是,一个带有 CPU 分析信息的调用图),他可以这样做并将结果发送给我。我知道 XCode 内置了 CPU 分析,但是这个问题只能在用户的机器上重现,所以 XCode 不是一个选项(我不想让他安装它)。
我找不到可以在 OSX 上转储堆栈跟踪的命令行工具,也找不到用于访问其他线程堆栈的 API。我想 GDB 可以做到,但这很难向用户解释。
【问题讨论】: