我为MBR部分编写了一个x86汇编程序。
我将其编译如下:
nasm hellombr.asm -f bin -o hellombr.img
然后我在qemu中运行它:
qemu -fda hellombr.img -boot a
问题是如何在源代码级别调试程序?
最佳答案
您应该让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-启动a
$ gdb
(gdb)符号文件hellombr.elf
(gdb)目标远程localhost:1234
有关我传递给qemu
的标志的说明,请参见this答案。