蜂鳥E203系列——Linux調試(GDB+Openocd)

  • 2020 年 7 月 14 日
  • 筆記

欲觀原文,請君移步

本文基於文章《蜂鳥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 恢復程式運行,直到碰到下一個斷點

常用命令參考鏈接

//www.cnblogs.com/jasonLiu2018/p/11494214.html
//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