1

抛出异常后,在使用 LLDB 时,我在 Xcode 输出窗口中收到此类消息:

*** First throw call stack:
(**0x1ea3012 0x1bb0e7e 0x1f2e4bd 0x1e92bbc**

我的问题是,这些十六进制数字究竟代表什么?那是调用堆栈上堆栈帧的地址吗?我真的在这里寻找正确的术语。

4

1 回答 1

2

这不是 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 可以打印很多关于您的函数的附加信息。

于 2013-06-28T22:05:45.217 回答