使用 Xcode 4.3.2。我查看了许多不同的类似问题,包括这个
但无法让调试器(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.dylib
objc_exception_throw 帧 #1: 0x323ff788 CoreFoundation`+[NSException raise:format:arguments:] + 100
这就是整个事情,无论是bt
在图形断点/调试器视图中还是完全放大。
如果此时我点击继续几次,它最终会告诉我异常/断言,例如
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“_endUndoGroupRemovingIfEmpty::NSUndoManager 0x2b7610 处于无效状态,调用 endUndoGrouping 时没有匹配的开始
但我不知道它在哪里。
gdb,使用相同的断点,将停止并告诉我它在哪里,但不打印异常文本。如果我点击 continue 几次它会,但我已经失去了回溯的上下文。
我想知道如何打印异常文本,所以我知道它为什么停止,而不必做一些继续并失去我的位置。我还想让它像在 gdb 中那样在异常点停止在 lldb 中。