lldb-360.1.65(xcode8.1)disas命令带有结果错误

时间:2016-11-02 14:22:38

标签: ios lldb

我今天安装了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    

任何人都可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:0)

有关代码是arm还是thumb的信息在符号表中携带,调试器会读取该信息。看起来在8.0示例中,您反汇编函数中的代码(它不在二进制标头中),因此我们无法找出要使用的正确架构。 7.1示例是我们认识到的一个功能(尽管它的名称已被删除......)所以我们做对了。

作为一种变通方法,您可以通过将-A thumb传递给disassemble来强制进行选择。

如果您在识别函数中反汇编代码时也看到了这一点,则应该使用http://bugreporter.apple.com提交错误。