我今天安装了Xcode 8.1。它包括版本为360.1.65的lldb。当我使用lldb在iOS 7.1.2上调试armv7二进制文件时。它不能自动关闭拇指代码。这是我使用disas命令得到的结果。
(lldb) disas -s 0x709d8 -e 0x709e0
networkd`_mh_execute_header:
0x709d8 <+39384>: b 0xff3aca20
0x709dc <+39388>: .long 0xf64c6940 ; unknown opcode 我在lldb-350.0.21.9 (Xcode 7.3.1)上测试了相同的代码,没有问题。
(lldb) disas -s 0x479d8 -e 0x479e0
networkd`___lldb_unnamed_function192$$networkd:
0x479d8 <+352>: blx 0x57f74 ; symbol stub for: xpc_data_get_bytes_ptr
0x479dc <+356>: ldr r0, [r0, #0x14]
0x479de <+358>: movw r0, #0xc800 有人能帮我吗。谢谢。
发布于 2016-11-03 06:00:58
关于代码是arm还是thumb的信息被携带在符号表中,调试器读取该信息。看起来就像在8.0示例中,你正在反汇编不在函数中的代码(它在二进制头中),所以我们找不到正确的架构来使用。7.1示例位于一个我们可以识别的函数中(尽管它的名称已被剥离...)所以我们做对了。
作为一种解决办法,您可以通过将-A thumb传递给disassemble来强制选择。
如果您在反汇编已识别函数中的代码时也看到此问题,那么您应该向http://bugreporter.apple.com提交一个错误。
https://stackoverflow.com/questions/40382321
复制相似问题