这些十六进制数字在LLDB输出中到底代表什么?

时间:2013-06-28 21:22:27

标签: ios debugging lldb

抛出异常后,当使用LLDB时,我在Xcode输出窗口中得到这种类型的消息:

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

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

1 个答案:

答案 0 :(得分: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可以打印很多有关您的功能的其他信息。