一千萬個為什麽

搜索

為什麽調試符號沒有添加到我的輸出文件中?

我正在嘗試編譯一個項目,以便在我擁有的ARM板上運行。要使用調試器,我必須將調試符號放在生成的.elf文件中。

我配置了所有內容並運行了我的makefile,產生了以下結果:

arm-elf-gcc -x assembler-with-cpp -c -mcpu=arm7tdmi-s -g -gdwarf-2 -Wa,-amhls=src/crt.lst   src/crt.S -o src/crt.o
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=src/main.lst    -MD -MP -MF     .dep/main.o.d -I . -I./inc src/main.c -o src/main.o
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=library/md5.lst    -MD -MP -MF .dep/md5.o.d -I . -I./inc library/md5.c -o library/md5.o
arm-elf-gcc -c -mcpu=arm7tdmi-s -O0 -g -gdwarf-2 -mthumb-interwork -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=library/bignum.lst    -MD -MP -MF .dep/bignum.o.d -I . -I./inc library/bignum.c -o library/bignum.o

arm-elf-gcc ./src/crt.o ./src/main.o ./library/md5.o ./library/bignum.o -mcpu=arm7tdmi-s -g -nostartfiles -T./prj/LPC2138_flash.ld -Wl,-Map=testFLASH.map,--cref,--no-warn-mismatch -nostdlib -L. -Wl,-static -ffunction-sections -Wl,--gc-sections -Wl,-s -fdata-sections  -lc -lg -lnosys -o testFLASH.elf

我已經放入了-g標誌,但是當我嘗試查找調試符號時,我只得到:

C:\Users\stkerr\Code\EclipseWorkspace\LibraryWork>objdump -g testFLASH.elf

testFLASH.elf:     file format elf32-little

當我嘗試在調試器中打開.elf文件時,進一步確認了這一點,我收到有關沒有調試符號的文件的錯誤。

任何人都可以指出我的arm-elf-gcc調用中的錯誤或我錯過的標誌?

最佳答案

在文檔中稍微討論一下後,-Wl,-s就成了問題。

它從生成的可執行文件中刪除所有符號,包括調試信息。

轉載註明原文: 為什麽調試符號沒有添加到我的輸出文件中?