10

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

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

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

4

2 回答 2

7

它会说像这样尝试:

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

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

于 2013-07-01T07:25:18.290 回答
0
$  nasm -g -f elf64 -l 2.lst  2.asm
$  gcc -m64 -o 2.exe  2.o
于 2022-02-12T19:30:34.677 回答