本文基於文章《蜂鳥E203系列——利用 Hbrid-E-SDK 環境開發程序》
GDB 簡介
GDB(GNU Project Debugger),是 GNU 工具鏈中的調試軟件。 GDB 是一款應用非常廣泛的調試工具,能夠用於調試 C、 C++、 Ada 等等各種語言編寫的程序,它提供如下功能:
-
下載或者啟動程序
-
通過設定各種特定條件來停止程序
-
查看處理器的運行狀態,包括通用寄存器的值,內存地址的值等
-
查看程序的狀態,包括變量的值,函數的狀態等
-
改變處理器的運行狀態,包括通用寄存器的值,內存地址的值等
-
改變程序的狀態,包括變量的值,函數的狀態等
GDB 可以用於在主機 PC 的 Linux 系統中調試運行的程序,同時也能用於調試嵌入式硬件,在嵌入式硬件的環境中,由於資源有限,一般的嵌入式目標硬件上無法直接構建 GDB 的調試環境(譬如顯示屏和 Linux 系統等),這時可以通過 GDB + GdbServer 的方式進行遠程 (remote) 調試,通常而言 GdbServer在目標硬件上運行,而 GDB 則在主機 PC 上運行。
GDB 常用指令表
命令 | 描述 |
---|---|
load file | 動態連接file |
jump | 使當前程序跳轉到某一行或某個地址 |
info br | 查看斷點信息 |
break function | 在指定的函數或行號設置斷點 |
step | 進入函數內部 |
next | 執行下一行代碼,但是不進入函數內部 |
continue | 恢復程序運行,直到碰到下一個斷點 |
常用命令參考鏈接
https://www.cnblogs.com/jasonLiu2018/p/11494214.html
https://www.cnblogs.com/lsgxeva/p/8024867.html
OpenOCD 簡介
為了能夠支持 GDB 對其進行調試, 蜂鳥 E203 使用 OpenOCD 作為其 GdbServer 與 GDB 進行配合。OpenOCD (Open On-Chip Debugger) 是一款開源的免費調試軟件,由社區共同維護,由於其開放開源的特點,眾多的公司和個人使用其作為調試軟件,支持大多數主流的 MCU 和硬件開發板。
GDB 調試
在hbird-e-sdk目錄下執行
1 編譯目標文件
make dasm PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flash USE_NANO=1 NANO_PFLOAT=0
2 下載運行
make upload PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flash USE_NANO=1 NANO_PFLOAT=0
3 打開OpenOCD,與開發板進行連接
make run_openocd PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=itcm
3 重新打開一個終端並打開GDB
make run_gdb PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=itcm
4 在 GDB 界面進行調試:main函數設置斷點
break main
5 查看斷點信息
info break
6 從程序main入口執行,程序停在第一個斷點處
jump main
7 從斷點處單步調試
n