[英]Missing debug information from NASM and GCC
我正在构建一个可执行的小型OS,并且在使用NASM,GCC和GNU Binutils进行链接时遇到问题。
我正在链接多种类型的目标文件:
当我使用自定义链接描述文件将这些文件链接在一起,然后重新读取degub信息时,我只能从第一个链接的目标文件中找到调试信息(按有效地址排序)。
作为参考,我将发布几行用于编译的代码:
nasm -g -felf32 -F dwarf entry.asm -o "build/entry.o"
gcc -c main.c -o "build/main.o" -m32 -mtune=i386 -gdwarf
并链接:
ld -Tlinker.ld -m elf_i386 --nmagic -nostdlib -static -o "build/bootload.elf" -M -g > "build/map.txt"
我使用GCC版本6.2,Binutils版本2.27和NASM版本2.12
如果需要,我将发布链接描述文件。 请帮助,没有行信息的调试非常烦人。
固定。
正如@Jester所建议的(感谢),问题出在链接脚本中。
我将每个目标文件部分放在最终ELF文件的.text
部分中。 我将发布一些代码来解释旧的和新的,更正的行为:
旧:
.text : AT(0x800) {
test.o(*);
}
新:
.text : AT(0x800) {
test.o(.text);
test.o(.data);
test.o(.bss);
}
所有这些代码均用于链接描述文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.