[英]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.