簡體   English   中英

GDB:[無可用資源]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM