2012-09-15 80 views
3

我想調試一個我在Ubuntu中編寫的小型.asm文件。然而,我遇到了一個問題,我的符號表沒有被加載,並正在尋求一些幫助。gdb + nasm調試信息未被創建

我正在編譯我的程序如下。

nasm -f elf -g -F dwarf bs.asm 
gcc -m32 -g bs.o -o bs 

產生可執行BS當我運行

gdb bs 

我得到一個消息,說沒有調試符號,當我試圖通過

b main 

設置一個破發點,它說函數沒有定義,即使它在文件中,我可以運行它使用./bs

我讀了一個cou建議在組裝時添加-F矮人,但如果任何人有任何洞察力,這將無濟於事,我將不勝感激您的意見。

+0

我搬到你的答案正確的答案,所以這個問題將不再看開。 –

+1

我已經通過從鏈接器命令中刪除'-s'標誌來解決類似的問題,該命令出於某種原因。 – Kolyunya

回答

3

cpowel2解決了自己的問題:

解決:萬一別人也有同樣的問題(好像有在網絡上一噸的職位),我能夠解決這個問題將我的文件的section .txt部分更改爲.text和gdb部分。

+0

作爲一個一直在爲這個問題而苦苦掙扎的人,現在我有一個類似的問題,事實證明,如果你有'segment .text:',它不會工作,你需要確保你的段線沒有冒號後面!!! – mgrandi

0

SECTION .text

;在nasm中 - 文本部分必須用小寫字母表示,以便gdb檢索它。

5

組裝用下面的命令文件: -

nasm -f elf -F dwarf -g file.asm
ld -m elf_i386 -o file file.o

,然後用GDB,

+0

這真的很有幫助!它看起來像參數的順序很重要。 – 1a1a11a