抛出异常后,当使用LLDB时,我在Xcode输出窗口中得到这种类型的消息:
*** First throw call stack:
(**0x1ea3012 0x1bb0e7e 0x1f2e4bd 0x1e92bbc**
我的问题是,这些十六进制数字到底代表什么?这是调用堆栈中堆栈帧的地址吗?我真的在这里寻找正确的术语。
答案 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可以打印很多有关您的功能的其他信息。