我在iOS 5模拟器/设备上调试Xcode4.2时遇到了问题。不出所料,以下代码崩溃:
NSArray *arr=[NSArray array];
[arr objectAtIndex:100];
在iOS 4中,我得到了十六进制数的有用堆栈跟踪。但在iOS 5中,它只给了我:
*** First throw call stack:
(0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805)
谢谢。
发布于 2011-10-27 06:10:49
有一个添加异常断点的有用选项(使用断点导航器底部的+)。这将在任何异常情况下中断(或者您可以设置条件)。我不知道这个选择是4.2中的新选择,还是我最终注意到它试图解决缺少符号的问题。
到达此断点后,您可以像往常一样使用Debug Navigator导航调用堆栈、检查变量等。
如果你确实想要一个适合复制/粘贴的符号化调用堆栈,gdb回溯将在那里工作得很好:
(gdb) bt
#0 0x01f84cf0 in objc_exception_throw ()
#1 0x019efced in -[NSObject doesNotRecognizeSelector:] ()
(等)
发布于 2011-11-04 02:53:13
调试器上有一个新功能。您可以在抛出异常时设置断点并立即停止执行,就像在4.0中一样。
在“断点导航器”上,添加一个“异常断点”,然后在“选项”弹出窗口中按“完成”即可。
就这样!
PS:在某些情况下,最好只对Objective-C异常进行中断。
发布于 2011-10-21 04:10:35
这是一个常见的问题,在4.2中得不到堆栈跟踪。您可以尝试在LLDB和GDB之间进行交换,看看是否能获得更好的结果。
在这里提交错误报告。
http://developer.apple.com/bugreporter/
编辑:
我相信,如果你换回LLVM,GCC 4.2,你将不会看到这种情况发生。不过,您可能会丢失所需的功能。
https://stackoverflow.com/questions/7841610
复制相似问题