GDB+Jlink除錯注意事項
阿新 • • 發佈:2019-01-07
1.在彙編呼叫C的一步要用“Step in”,不要用“Step Over”,因為main對於彙編來說只是一個函式。會造成程式全速執行,不能單步除錯。對於彙編程式碼,“Step in”“Step Over”是一樣的效果,所以在進行main函式之前最好都用“Step in”。
2. 在原始碼中只修改了Makefile和連結指令碼時候,要先清理一下再重新編譯。因為make的潛規則是隻檢測原始碼是否改變。會遇到如下提示:
**** Build of configuration Default for project mmuv1 ****
make all
make: Nothing to be done for `all'.
3.Cannot access memory at address 0xbfea4450 和 0x00000000 in ?? ()
以前也遇到過這個問題,沒有記錄,最近一次遇到是在S5PV210上在寫DDRAM初始化指令碼的過程中遇到,並解決。是DDRAM沒有完全初始化好。
4.Target request failed: Infinite loop detected
翻譯過來就能理解,這是一個無限迴圈,再往下單步執行沒有意義。就提示瞭如下資訊。
5.gdbinit指令碼中break _start設定斷點,卻沒有設定到_start連結地址對應的行號,而是下一條指令對應的行號
Cortex-A8在除錯彙編的時候,是支援的"Step Over","Step Into","Step Return",ARM9只有"Step Into"的,"Step Over"和"Step Into"功能是一樣的。 7.Remote connection closed 除錯時候會出現這個錯誤。
8.當你的程式不能停到斷點處的時候,從以下兩處找原因。 1> 編譯程式的時候是否加了-g,生成可除錯的應用程式。否則arm-linux-gdb找不到除錯的符號表。 2> gdbinit指令碼中是否有break