我有一個.c C源代碼和一個.S彙編源代碼的項目。一旦編譯和鏈接,是否有任何方法使用Kdbg調試.S代碼?我從.c文件中調用一個.S函數,但在Kdbg中沒有代碼加載。使用Kdbg調試彙編代碼
2
A
回答
3
在源文件中添加.file指令,如:.file「sourceasm.s」。 Kdbg會按照預期使用它。
1
我剛剛試過kdbg
(the KDE front-end for gdb,而不是幾乎相同名稱的Linux kernel debugger kgdb
)。
它似乎沒有像普通gdb的layout asm
一樣的適當的反彙編模式。您可以將「存儲器」窗口設置爲反彙編,並將地址設置爲$pc
(並且會以單步的方式更新),但是這會鎖定存儲器窗口,並且不便於在當前RIP之前設置斷點或向後滾動到指令/ EIP。
即使您正在調試asm源代碼,您有時也希望讓調試器向您展示真正的反彙編,以及/而不是asm源代碼。例如在使用宏的代碼中,或者在NASM %rep
中重複塊。
AFAICT,kdbg
對於asm調試並不是一個很好的選擇。具有layout asm
/layout reg
的文本模式GDB可以;請參閱x86標記wiki底部的提示。我也試過https://github.com/cs01/gdbgui。它有一個反彙編模式,但它不是很好。
由於@ivan說,使用kgdb會讓你做的ASM源文件源級調試,如果你補充足夠的元數據,因爲它知道對象來自哪一個源文件。
- GCC:建立與
gcc -g foo.S
- NASM:與
nasm -felf64 -g -Fdwarf
組裝到包括DWARF調試信息。 (NASM默認爲STABS調試信息,也可以使用。) - YASM:與
yasm -felf64 -gdwarf2
組裝。
請參閱Assembling 32-bit binaries on a 64-bit system (GNU toolchain)瞭解關於從asm源碼構建靜態/動態二進制文件的更多信息。
相關問題
- 1. 調試反彙編代碼
- 2. kdbg pid()在源代碼中調用
- 3. 使用as88彙編器從彙編代碼調用C函數
- 4. 使用匯編代碼
- 5. 從彙編代碼調用fgets
- 6. 彙編代碼
- 7. 使用avr-gcc編寫彙編代碼
- 8. 嘗試瞭解彙編代碼中的調用過程
- 9. 在調試期間無法步入引用的彙編代碼
- 10. 在mac上測試彙編代碼
- 11. 使用Xcode調試行內彙編
- 12. iOS彙編代碼
- 13. 彙編代碼MOVS
- 14. C++彙編代碼
- 15. 彙編代碼C
- 16. x86彙編代碼
- 17. ARM彙編代碼
- 18. GMP-彙編代碼?編譯代碼
- 19. 彙編&C - 翻譯C'S代碼彙編
- 20. 使用PIC16F877閃爍LED - 彙編代碼
- 21. 反編譯彙編代碼
- 22. 如何在調試時跳過彙編代碼?
- 23. 在Win7 x64上運行代碼視圖(彙編調試器)
- 24. 如何在調試時關閉顯示彙編代碼?
- 25. XCode調試 - 我可以跳過反彙編代碼
- 26. 在Eclipse中調試期間查看,修改彙編代碼
- 27. 遠程調試器,進入彙編代碼
- 28. kdbg繼續調試鍵盤快捷鍵
- 29. IA32彙編代碼Y86彙編代碼:leal指令
- 30. 轉換GCC彙編代碼爲armasm彙編代碼
爲什麼選擇kdbg而不是WinDbg?和哪個編譯器?什麼構建選項?請詳細說明! –
我在Ubuntu – LooPer
下使用gcc,請添加gcc和ubuntu標籤,否則你的問題是不明確的。 Kdbg是Windows上的內核調試器。 –