1. 程式人生 > 實用技巧 >蜂鳥E203系列——Linux除錯(GDB+Openocd)

蜂鳥E203系列——Linux除錯(GDB+Openocd)

欲觀原文,請君移步

本文基於文章《蜂鳥E203系列——利用 Hbrid-E-SDK 環境開發程式》

GDB 簡介

GDB(GNU Project Debugger),是 GNU 工具鏈中的除錯軟體。 GDB 是一款應用非常廣泛的除錯工具,能夠用於除錯 C、 C++、 Ada 等等各種語言編寫的程式,它提供如下功能:

  1. 下載或者啟動程式

  2. 通過設定各種特定條件來停止程式

  3. 檢視處理器的執行狀態,包括通用暫存器的值,記憶體地址的值等

  4. 檢視程式的狀態,包括變數的值,函式的狀態等

  5. 改變處理器的執行狀態,包括通用暫存器的值,記憶體地址的值等

  6. 改變程式的狀態,包括變數的值,函式的狀態等

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