Cocoa touch 查找位置和错误的调试方法';这会导致游戏冻结

Cocoa touch 查找位置和错误的调试方法';这会导致游戏冻结,cocoa-touch,debugging,cocos2d-iphone,Cocoa Touch,Debugging,Cocos2d Iphone,我最近遇到了一个我无法理解的错误。我用Cocos2D开发的游戏只是在某个随机点冻结——它会有一个SIGSTOP——我找不到原因。我可以使用什么工具(以及如何使用它)来找出错误发生的位置和原因?在调试器中停止是一个很好的方法 有一种非常快速的方法可以调查冻结(或任何性能问题),特别是在不容易复制的情况下。你必须随身携带一个终端(因此你需要在iOS模拟器或Mac OS X上运行,而不是在iOS设备上运行) 发生挂起时,弹出到终端并运行: sample YourProgramName 示例您的程序名

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

在调试器中停止是一个很好的方法

有一种非常快速的方法可以调查冻结(或任何性能问题),特别是在不容易复制的情况下。你必须随身携带一个终端(因此你需要在iOS模拟器或Mac OS X上运行,而不是在iOS设备上运行)

发生挂起时,弹出到终端并运行:

sample YourProgramName 示例您的程序名 (如果您的程序名中有空格,请用引号括起来,如
示例“我的精彩游戏”
示例的输出是一个日志,显示您的程序在哪里花费时间,以及您的程序是否实际挂起,很明显,哪些功能被卡住了。

我不同意上面的观点,因为在设备上运行对于实现应用程序冻结的真实场景非常有用。模拟器有更多的内存,不能准确地再现设备的硬件(例如,在某些情况下帧速率较低)

“显然”,您需要将您的设备(带有开发人员配置文件)连接到上,并查看控制台终端,以查找user@AaronGolden建议的跟踪

若这些还不够,您可能需要在Xcode中启用一个常规异常断点来捕获更多的stacktrace消息

当我开始学习Cocos2D时,我的应用程序经常出错。以下是常见原因列表:

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

用于分析应用程序中的内存警告(例如,查看分配工具和内存警告)。

点击调试器中的暂停按钮,查看它是否为您提供可能出现死锁的位置。您为什么将我的名字放在短引号中?无论如何,问题似乎是OP不能按需重现问题,而且每次使用仪器运行都会令人沮丧,以防您这次碰巧遇到错误。这就是为什么我说准备好切换到终端并运行示例。如果OP能够可靠地再现问题,那么工具是正确的选择,但是为什么您建议使用分配工具呢?当然,时间分析器是解决一般挂起/慢度问题最适用的工具。我正在按照你说的做,对我的所有精灵使用纹理打包器(pvr.ccz)。我试试你说的!谢谢你的回复,非常感谢。如果应用程序冻结,可能是因为“系统过载”,并认为内存分配可能会影响,但可能是错误的,但没有帧速率下降。是的,对不起,伙计,我也是一个新手,所以请听一下像@AaronGolden这样的人在这个论坛上说的话。他们有更多的知识和经验:),抱歉误导。哦,非常感谢你的回答,我试试这个。我仍在试图重现这个错误,但根据你所说的,它再次出现。再次感谢你的回答!我照你说的做了,我发现了问题所在。我的一个方法中有一个循环,但奇怪的是当我暂停时,debbuger没有指向它,这使得​​很难找到错误。谢谢你所做的一切!