[英]GDB: [ No source available ]
我已經為armv7-m(Cortex-Mx)微控制器編寫了內核。 內核能夠動態加載ELF文件。 在GDB中調試時,將加載所有內核符號,並且我可以單步瀏覽C ++源代碼而不會出現問題。 在動態加載時,使用以下命令添加應用程序符號:
add-symbol-file app <base .text address> -s .data <base .data address> -s .bss <base .bss address>
然后,我可以設置斷點,使用匯編視圖進入main並打印出argc / argv等符號的值。 一切看起來都正確。
除了在源代碼視圖中,它僅顯示[No Source Available]。 我驗證了應用程序已使用-O0 -ggdb進行編譯。 ELF應用程序中的路徑正確。 與GDB 設置目錄混為一談,沒有運氣。
在GDB中解析源的機制是什么? 如果加載了符號,則完整的ELF隨調試信息一起提供,並且源代碼與編譯位置相同,還有什么問題呢?
gdb-multiarch GNU gdb(Ubuntu 8.1-0ubuntu3)8.1.0.20180409-git
arm-none-eabi-gcc(用於Arm嵌入式處理器的GNU工具7-2018-q3-update)7.3.1 20180622(發行版)[ARM / embedded-7-branch version 261907]
謝謝!
我可以通過在鏈接描述文件中的.text上方移動某些部分來解決此問題。 不知道為什么這會改變任何東西...我認為它必須改變下面部分的對齊方式,但是我的實驗都沒有成功。
/* These MUST be before .text segment for proper symbolic debugging... */
.dynstr : { *(.dynstr) } > FLASH
.hash : { *(.hash) } > FLASH
.dynsym : { *(.dynsym) } > FLASH
為什么會這樣的任何解釋將不勝感激。 也許由於某些GDB內部假設?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.