自从我将xcode从3.1升级到xcode 4.2之后,当我调试一个程序并且由于某些原因出现SIGABRT错误(即调用不存在的对象的方法)时,Xcode会在程序的主函数中显示错误,而不是生成SIGABRT的行。也许我在调试器或xcode中缺少某种配置?有什么建议吗?
我很长一段时间都有同样的问题,现在我刚找到了解决方案。不知道这是否是最好的方法,但至少对我有效。基本上,您应该创建一个全局断点(全局意味着适用于您所有的项目)。请查看此博客文章和有关如何创建符号断点的教程。我自己是通过以下方式创建异常断点(它也会捕获objc_exception_throw): 然后将其移动到“用户”断点空间:
对我来说,起作用的是我在这里找到的一些与创建NSZombies有关的东西。 我至少会摘录一下要点: 在Xcode 4中打开你的项目 可以在方案编辑器中设置环境变量(在菜单栏中找到Product->Edit scheme…): 将变量命名为NSZombieEnabled,并将其值设置为YES。 以调试模式运行应用程序。你可能会得到一个消息已发送到释放实例的消息,调试器会停留在错误的那一行。这个信息会导致问题的产生。 准备就绪后,通过将YES更改为NO来禁用NSZombieEnabled。