答案 0 :(得分:156)
答案 1 :(得分:10)
在新的模拟器上(iOS 8,64bit)xcode 6我在异常框架中使用:objc_exception_throw
po $rax
in 32bit:
po $eax
什么是rax?
Rax是一个64位寄存器,用于替换旧的eax
如何找到所有寄存器?
register read
答案 2 :(得分:5)
在撰写本文时,这篇文章是我在Google上的热门话题: lldb打印例外。因此,我将此答案添加到lldb和x86_64帐户中。
我使用po $eax
查找异常的尝试失败,error: Couldn't materialize struct: Couldn't read eax (materialize)
。来自早期答案的链接文档中描述的其他尝试也失败了。
关键是我必须首先点击主线程中的objc_exception_throw
框架。 lldb 不会在该帧中开始。
在我的所有搜索和以下示例中,this blog entry是第一个以对我有用的方式解释事物的人。它更现代,于2012年8月发布。
答案 3 :(得分:0)
如果你有一个catch语句,在那里放一个断点,你可以在那时检查异常对象。
如果您没有catch语句,请继续。
您的终端会收到如下信息:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' * - [__ NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从对象插入nil对象[0]'
然而,您可能正在寻找一种方法来检查它而不会继续,因为在应用程序终止时您将丢失好的堆栈跟踪。
为此,听起来Fnord的答案是最好的,但我无法让它在LLDB中运作。