簡體   English   中英

NASM和GCC缺少調試信息

[英]Missing debug information from NASM and GCC

我正在構建一個可執行的小型OS,並且在使用NASM,GCC和GNU Binutils進行鏈接時遇到問題。
我正在鏈接多種類型的目標文件:

  • 來自NASM的帶有矮調試信息的ELF32目標文件
  • 具有來自GCC的矮調試信息的ELF32目標文件

當我使用自定義鏈接描述文件將這些文件鏈接在一起,然后重新讀取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM