8

我最近遇到了一个我无法理解的错误。我正在使用 Cocos2D 开发的游戏只是在某个随机点冻结——它得到一个 SIGSTOP——我找不到原因。我可以使用什么工具(以及如何使用它)来找出错误发生的位置以及导致错误的原因?

4

2 回答 2

8

Jeremy 建议停止在调试器中是一个很好的建议。

有一种非常快速的方法可以调查冻结(或任何性能问题),尤其是当它不容易重现时。你必须有一个方便的终端(所以你需要在 iOS 模拟器或 Mac OS X 上运行,而不是在 iOS 设备上)。

当挂起时弹出到终端并运行:

示例 YourProgramName

(如果您的程序名称中有空格,则将其用引号括起来。sample "My Awesome Game"sample

于 2013-04-19T20:30:08.093 回答
1

我不同意上面Aaron Golden 的回答,因为在设备上运行对于获得应用程序冻结的真实案例非常有用。模拟器有更多的内存,并且不能以准确的方式再现设备的硬件(例如,帧速率在某些情况下较低)。

“显然”,您需要在Xcode上连接您的设备(使用开发人员配置文件)并查看控制台终端以查找用户 @AaronGolden 建议的跟踪。

如果这些还不够,您可能希望在 Xcode 中启用通用异常断点来捕获更多堆栈跟踪消息。

当我开始学习 Cocos2D 时,我的应用程序经常死机。这是常见原因的列表:

  • 我没有使用精灵表,因此帧速率急剧下降
  • 我使用了太多内存(太多高清精灵。看看TexturePacker并使用 pvr.ccz 或 pvr.gz 格式;它将内存分配减少了一半)

使用工具来分析您的应用程序的内存警告(例如,查看分配工具并查找内存警告)。

于 2013-04-19T20:37:25.987 回答