【发布时间】:2012-09-26 21:46:16
【问题描述】:
使用 Xcode 4.3.2。我查看了许多不同的类似问题,包括这个
no-call-stack-on-exception-in-xcode-4
但无法让调试器(gdb 或 lldb)给我一个很好的堆栈跟踪,显示异常的位置,并且还打印异常是什么
在objc_exception_throw 上设置符号异常或“所有异常”异常断点,lldb 不会为我提供良好的堆栈跟踪,但会显示以下内容:
- 线程#1:tid = 0x1c03, 0x34455238 libobjc.A.dylib
objc_exception_throw, stop reason = breakpoint 1.1 frame #0: 0x34455238 libobjc.A.dylibobjc_exception_throw 第 1 帧:0x323ff788 CoreFoundation`+[NSException raise:format:arguments:] + 100
这就是全部,无论是通过bt 还是在图形断点/调试器视图中完全放大。
如果此时我点击继续几次,它最终会告诉我异常/断言,例如
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“_endUndoGroupRemovingIfEmpty:: NSUndoManager 0x2b7610 处于无效状态,调用 endUndoGrouping 时没有匹配的开始
但我不知道它在哪里。
gdb,使用相同的断点,将停止并告诉我它在哪里,但不打印异常文本。如果我点击 continue 几次它会,但我已经失去了回溯的上下文。
我想知道如何打印异常文本,这样我就知道它为什么停止了,而不必做一些继续并失去我的位置。我也想让它像在 gdb 中那样在异常点停止在 lldb 中。
【问题讨论】:
-
正如这里讨论的stackoverflow.com/a/1129165/792677 你可以使用这个creativeinaustria.wordpress.com/2008/10/18/… 和这个creativeinaustria.wordpress.com/2008/10/20/… 我通常会得到完全符号化的崩溃报告,这足以快速解决问题而不是使用调试器。
标签: ios xcode exception gdb lldb