如何用nasm生成gdb符号文件?

bri*_*rns 5 gdb nasm

我正在使用汇编编写的玩具引导程序/内核并在qemu仿真器上运行.我可以用-s -S选项运行qemu 并使用远程目标使用gdb进行调试,但是我没有使用gdb加载任何调试符号.如何从程序集生成符号文件?

我正在使用nasm为qemu生成一个二进制映像,以便从我的汇编文件中运行,但我还没有找到在映像本身中包含调试信息(我不确定这是否有意义).我还发现gdb允许你加载一个单独的符号文件进行调试,所以现在我的问题是如何从汇编代码生成符号文件.

我已经看到了使用的建议objcopy,但我相信只适用于elf文件,而不是二进制文件.我试过让nasm生成一个精灵,但由于我org在程序集文件中的(必要的)指令,它一直在进行barfing .

dbr*_*nk0 5

它会说尝试这样:

  1. 组装时使用"-f elf -F dwarf -g"开关.这应该生成包含调试符号(以及代码和其他所有内容)的elf文件.
  2. 使用objcopy生成二进制文件.
  3. 将二进制文件加载到您的系统.
  4. 附加调试器,然后告诉它从.elf文件加载符号(符号文件yourfile.elf)

你需要解决为什么nasm无法生成带有.org的.elf文件.我不知道.GNA对此很好.