我最近遇到了一个我无法理解的错误。我正在使用Cocos2D开发的游戏只是在一个随机点冻结 - 它得到一个SIGSTOP - 我找不到原因。我可以使用什么工具(以及如何使用它)来找出错误发生的位置以及导致错误的原因?
答案 0 :(得分:8)
Jeremy's suggestion在调试器中停止是一个很好的。
有一种非常快速的方法来调查冻结(或任何性能问题),特别是当它不容易重现时。你必须有一个方便的终端(所以你需要在iOS模拟器或Mac OS X上运行,而不是在iOS设备上运行。)
当发生挂起时,弹出到终端并运行:
sample YourProgramName
(如果您的程序名称中有空格用sample "My Awesome Game"
等引号括起来。)sample
的输出是一个日志,显示您的程序花费时间的位置,以及您的程序是否实际挂起,很明显哪些功能会被卡住。
答案 1 :(得分:1)
我不同意上面的Aaron Golden's answer因为在设备上运行非常有用,以便有一个应用程序冻结的实际场景。模拟器具有更多内存, 无法以精确方式再现设备的硬件(例如,帧速率在某些情况下更低)。
“显然”,您需要在Xcode上连接您的设备(使用开发者资料)并查看控制台终端以查找用户@AaronGolden建议的跟踪。
如果这些还不够,您可能希望在Xcode中启用一般异常断点来捕获更多的堆栈跟踪消息。
当我开始学习Cocos2D时,我的应用程序经常会出现问题。这是常见原因列表:
使用instruments分析您的应用内存警告(例如,查看分配工具并查找内存警告)。