为什么GDB不会转到下一条机器指令。在下面的gif中,我将程序计数器设置为指向开始(0x100020),它保存cli
指令。但是,当我输入(gdb) stepi
时,GDB不会转到下一条指令(0x100021)mov $0x104000,%esp
,而是跳转到(0x100023)。
无论我从哪个指令开始,GDB都不会跳转到下一个逻辑指令,而是跳转到看似任意的位置。这是为什么?
答案 0 :(得分:1)
WSL尚未提供32位ELF支持。
请参阅following StackOverfow question。
原来WSL是问题,我的elf文件是32位。
修改强>
虽然上述情况属实,但如果使用QEMU,则可以在WSL中通过GDB进行32位elf调试。就我而言,GDB的表现与上面不同,不是因为它是32位(因为我是通过QEMU运行elf文件),而是因为我的汇编程序生成的代码没有产生GDB理解的调试信息。我正在使用NASM,并且需要-F dwarf
和-g
标志来生成所述调试信息。