【发布时间】:2013-04-13 07:24:58
【问题描述】:
我最近遇到了一个我无法理解的错误。我正在使用 Cocos2D 开发的游戏只是在某个随机点冻结——它得到一个 SIGSTOP——我找不到原因。我可以使用什么工具(以及如何使用它)来找出错误发生的位置和原因?
【问题讨论】:
-
点击调试器中的暂停按钮,看看它是否为您提供了可能出现死锁的位置。
标签: cocoa-touch debugging cocos2d-iphone
我最近遇到了一个我无法理解的错误。我正在使用 Cocos2D 开发的游戏只是在某个随机点冻结——它得到一个 SIGSTOP——我找不到原因。我可以使用什么工具(以及如何使用它)来找出错误发生的位置和原因?
【问题讨论】:
标签: cocoa-touch debugging cocos2d-iphone
Jeremy's suggestion 在调试器中停止是一个不错的选择。
有一种非常快速的方法可以调查冻结(或任何性能问题),尤其是当它不容易重现时。您必须有一个方便的终端(因此您需要在 iOS 模拟器或 Mac OS X 上运行,而不是在 iOS 设备上运行)。
当挂起时弹出到终端并运行:
示例 YourProgramName(如果您的程序名称中有空格,请用引号括起来,如sample "My Awesome Game"。)sample 的输出是一个日志,显示您的程序花费时间的位置,如果您的程序实际挂起,它将是很明显哪些功能被卡住了。
【讨论】:
我不同意上面的Aaron Golden's answer,因为在设备上运行对于获得应用程序冻结的真实情况非常有用。模拟器有更多内存,没有以准确的方式再现设备的硬件(例如,帧速率在某些情况下较低)。
“显然”,您需要在Xcode 上连接您的设备(使用开发者配置文件)并查看控制台终端以查找用户@AaronGolden 建议的跟踪。
如果这些还不够,您可能希望在 Xcode 中启用通用异常断点来捕获更多堆栈跟踪消息。
当我开始学习 Cocos2D 时,我的应用程序经常死机。这是常见原因的列表:
使用instruments 分析您的应用程序是否存在内存警告(例如,查看分配工具并查找内存警告)。
【讨论】: