当我调试代码时,发现:
0x08048500 <+0>: push %ebp
0x08048501 <+1>: mov %esp,%ebp
...
0x08048563 <+99>: jmp 0x8048567 <Postion+103> <===0x8048567 doesn't exist an instruction.
0x08048565 <+101>: dec %edx
0x08048566 <+102>: cmp %bh,%al
0x08048568 <+104>: test %edx,%esp
问:为什么&#34; jmp 0x8048567&#34;跳到&lt; + 103&gt;?它不存在指令。重点是什么?感谢。
答案 0 :(得分:1)
为什么&#34; jmp 0x8048567&#34;跳到&lt; + 103&gt;?它不存在指令
0x8048567
处的指令很可能确实存在。您可以使用x/4i 0x8048567
看到它。
可能发生的事情是0x8048565
处的指令确实不存在,但GDB并不知道,继续反汇编一条指令,与实际指令失去同步流。