我正在学习Erica Sadun的iPhone开发者手册中的iPhone编程.当我按照模拟器中第81页开始的温度转换示例中的步骤运行我创建的应用程序时,它会因未捕获的异常而终止.(有关我发布到iPhoneSDK Google 网上论坛的问题,请参阅http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=en.)
从main()调用UIApplicationMain()后抛出异常.如果我查看调试器中的堆栈跟踪,我看到的只是(当然)汇编.我怎样才能知道抛出了什么样的异常?
更新:
从调试器控制台了解异常的详细信息足以帮助我解决问题.(请参阅http://groups.google.com/group/iphonesdk/browse_frm/thread/6f44a90fdb8da28a?hl=en.)我确认我可以设置符号断点objc_exception_throw
,但我没有查看是否有回溯来自会有所帮助.
在断点处设置objc_exception_throw
并通过Debug而不是Run运行您的应用程序
为了澄清,当你得到一个没有断点的异常时,你实际看到的是总是相同的堆栈跟踪 - 它是未捕获的异常处理程序.异常类型会记录到运行控制台,但是如果要查看引发异常的位置的回溯,那么这就是断点的用途.
在新的Xcode中(至少从v4.5开始),您可以通过这样做轻松捕获所有异常:
打开断点导航器(⌘6)
点击左下方的+
添加异常断点
我认为以上内容与断点相同objc_exception_throw
.http://samwize.com/2012/09/26/xcode-4-dot-5-tips-and-tricks/
http://ijoshsmith.com/2011/11/28/debugging-exceptions-in-xcode-4-2/
与samewize的解决方案相同,但也显示了如何在所有项目中默认显示此断点(右键单击断点,Move Breakpoint To,User).