如何在QEMU中使用GDB对x86代码进行源代码级调试?

Sky*_*Dan 5 debugging x86 assembly qemu

我为MBR部分编写了一个x86汇编程序.我编译如下:

nasm hellombr.asm -f bin -o hellombr.img
Run Code Online (Sandbox Code Playgroud)

然后我在qemu中运行它:

qemu -fda hellombr.img -boot a
Run Code Online (Sandbox Code Playgroud)

问题是我如何在源代码级别调试我的程序?

Job*_*Job 5

您应该nasm在 ELF 文件中创建调试符号,然后将其转储到要在 MBR 中使用的平面二进制文件。然后您可以指示 GDB 从 ELF 文件中读取必要的符号。

完整的过程将变成这样:

$ nasm hellombr.asm -f elf -g -o hellombr.elf
$ objcopy -O 二进制 hellombr.elf hellombr.img
$ qemu -s -S -fda hellombr.img -boot a
$ 数据库
(gdb) 符号文件 hellombr.elf
(gdb)目标远程本地主机:1234

对于标志的解释,我通过查看qemu这个答案