抛出异常后,在使用 LLDB 时,我在 Xcode 输出窗口中收到此类消息:
*** First throw call stack:
(**0x1ea3012 0x1bb0e7e 0x1f2e4bd 0x1e92bbc**
我的问题是,这些十六进制数字究竟代表什么?那是调用堆栈上堆栈帧的地址吗?我真的在这里寻找正确的术语。
这不是 lldb 的输出,而是您的程序(或您进行的 UIKit/AppKit/Foundation 调用)的输出。这些看起来像是 32 位进程中的代码地址——我猜想,有些东西正试图向您显示引发异常时的调用堆栈(回溯)。image lookup
您可以使用(“ im loo
”是最短的唯一形式)lldb 命令找到这些功能。例如,您自己的应用程序中的一个函数可能看起来像
(lldb) im loo -a 0x0009b92a
Address: opengltest[0x0000b92a] (opengltest.__TEXT.__text + 514)
Summary: opengltest`main + 514 at main.m:64
或者系统框架中的一个函数可能看起来像
(lldb) im loo -a 0x310073d4
Address: UIKit[0x2fe343d4] (UIKit.__TEXT.__text + 299972)
Summary: UIKit`UIApplicationMain + 1136
您还可以将-v
( --verbose
) 选项添加到image lookup
- 如果这是一个带有调试信息的框架(您自己的应用程序中的一个框架),lldb 可以打印很多关于您的函数的附加信息。