首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Xcode4.2调试不会符号化堆栈调用

Xcode4.2调试不会符号化堆栈调用
EN

Stack Overflow用户
提问于 2011-10-21 04:07:24
回答 5查看 41.8K关注 0票数 142

我在iOS 5模拟器/设备上调试Xcode4.2时遇到了问题。不出所料,以下代码崩溃:

代码语言:javascript
复制
NSArray *arr=[NSArray array];
[arr objectAtIndex:100];

在iOS 4中,我得到了十六进制数的有用堆栈跟踪。但在iOS 5中,它只给了我:

代码语言:javascript
复制
*** First throw call stack:
(0x16b4052 0x1845d0a 0x16a0674 0x294c 0x6f89d6 0x6f98a6 0x708743 0x7091f8 0x7fcaa9 0x2257fa9 0x16881c5 0x15ed022 0x15eb90a 0x15eadb4 0x15eaccb 0x6f02a7 0x6faa93 0x2889 0x2805)

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2011-10-27 06:10:49

有一个添加异常断点的有用选项(使用断点导航器底部的+)。这将在任何异常情况下中断(或者您可以设置条件)。我不知道这个选择是4.2中的新选择,还是我最终注意到它试图解决缺少符号的问题。

到达此断点后,您可以像往常一样使用Debug Navigator导航调用堆栈、检查变量等。

如果你确实想要一个适合复制/粘贴的符号化调用堆栈,gdb回溯将在那里工作得很好:

代码语言:javascript
复制
(gdb) bt
#0  0x01f84cf0 in objc_exception_throw ()
#1  0x019efced in -[NSObject doesNotRecognizeSelector:] ()

(等)

票数 110
EN

Stack Overflow用户

发布于 2011-11-04 02:53:13

调试器上有一个新功能。您可以在抛出异常时设置断点并立即停止执行,就像在4.0中一样。

在“断点导航器”上,添加一个“异常断点”,然后在“选项”弹出窗口中按“完成”即可。

就这样!

PS:在某些情况下,最好只对Objective-C异常进行中断。

票数 46
EN

Stack Overflow用户

发布于 2011-10-21 04:10:35

这是一个常见的问题,在4.2中得不到堆栈跟踪。您可以尝试在LLDB和GDB之间进行交换,看看是否能获得更好的结果。

在这里提交错误报告。

http://developer.apple.com/bugreporter/

编辑:

我相信,如果你换回LLVM,GCC 4.2,你将不会看到这种情况发生。不过,您可能会丢失所需的功能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7841610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档