Jon*_*asG 123 xcode cocoa-touch objective-c nsexception ios
每次我的应用程序崩溃时,Xcode都会在main()函数中突出显示UIApicationMain()调用,导致崩溃.在某些情况下,以前是正常的(例如分段错误),但我试图处理的崩溃是一个简单的SIGABRT,其中记录了控制台中的详细信息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: Date)'
Run Code Online (Sandbox Code Playgroud)
Xcode用于显示旧版SDK的正确行,但自从我升级到Xocde 4.2后发生了变化.很明显,Xcode确切地知道导致崩溃的原因(或者可能知道),但它仍然没有显示实际的行.这有什么修复或解决方法吗?
Car*_*ter 297
您还应确保为所有异常设置断点.这将导致Xcode停止在发生异常的行.执行以下[在Xcode 4中]:
在Xcode左侧的Project Navigator中,单击断点导航器(几乎一直到顶部按钮栏的右侧.图标看起来像一个粗右箭头).
在导航器的底部,单击"+"按钮.
单击"添加异常断点".
将创建一个新断点.它应该根据需要进行配置,但您可以调整其行为.
运行您的项目并重现异常.
您还提到您链接到某些第三方库/框架.如果在这些框架中发生异常,那么自编译代码以来,您将很难过,而Xcode实际上无法显示导致异常的行.如果是这种情况并且您确定正确使用库,那么您应该向这些库的维护者提交错误报告.
编辑目前的方案并启用NSZombieEnabled,MallocStackLogging和guard malloc.然后,当您的应用程序崩溃时,在gdb控制台中键入:
(gdb) info malloc-history 0x543216
Run Code Online (Sandbox Code Playgroud)
替换0x543216为导致该对象的对象的地址,NSInvalidArgumentException它应该为您提供更有用的堆栈跟踪,显示导致崩溃的代码行.
| 归档时间: |
|
| 查看次数: |
41353 次 |
| 最近记录: |