我在尋找另一個線程,但沒有運氣。我的問題可能很簡單,但令我感到沮喪。 我編譯兩個文件在64位的Ubuntu 11.04:Linux(64位),nasm和gdb
nasm -f elf64 -g file64.asm
gcc -g -o file file.c file64.o
而且我用GDB進行調試生成的可執行文件。使用C部分,一切正常,但彙編語言源代碼對調試器「不可見」。我越來越喜歡輸出:
(gdb) step
Single stepping until exit from function line,
which has no line number information.
0x0000000000400962 in convert()
我快速調查與:
objdump --source file64.o
顯示THET彙編源代碼(和行信息)包含在文件中。
爲什麼我在調試會話中看不到它?我做錯了什麼? 我必須說,移動到64位Ubuntu後出現這些問題。在32位的Linux中,它的工作原理就像它應該的那樣。這對我來說只是一種樂趣,但無論如何非常令人沮喪。
不知道它是否會有所幫助,但是您是否曾嘗試明確指定nasm的調試格式?例如。 'nasm -f elf64 -F stabs -g file64.asm' – Dmitri
不,德米特里,不幸的是它沒有幫助。還是一樣的情況,但是謝謝你的回覆 – Bogdan
我做了一個實驗。我在32位版本的Ubuntu下創建了64位目標文件(file64.o)(我也是這樣),並將它連接到64位系統下,現在它可以工作(!)但是nasm的調用總是相同的:'nasm -f elf64 -g file64.asm',我總是以同樣的方式使用gdb。看起來問題在於64位版本的nasm(我猜) – Bogdan