前 言
關(guān)于GDB工具
GDB工具是GNU項(xiàng)目調(diào)試器,基于命令行使用。和其他的調(diào)試器一樣,可使用GDB工具單步運(yùn)行程序、單步執(zhí)行、跳入/跳出函數(shù)、設(shè)置斷點(diǎn)、查看變量等等,它是UNIX/LINUX操作系統(tǒng)下強(qiáng)大的程序調(diào)試工具。GDB支持多種語言,包括Ada、匯編、C/C++、D、Fortran、GO、Objective-C、OpenCL、Modula-2、Pascal和Rust。
GDB具有一種“遠(yuǎn)程”模式,此種模式多半是在為嵌入式系統(tǒng)進(jìn)行調(diào)試時(shí)使用,遠(yuǎn)程操作指的是:GDB在一部機(jī)器內(nèi)運(yùn)行,而要進(jìn)行調(diào)試的程序是在另一部機(jī)器上運(yùn)行,支持TCP/IP協(xié)議傳輸?shù)母鞣N網(wǎng)絡(luò),在TCP/IP網(wǎng)絡(luò)及協(xié)議上再加搭傳輸GDB專有的調(diào)試操作通信協(xié)議,如此便能進(jìn)行遠(yuǎn)程調(diào)試。
創(chuàng)龍科技已基于IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平臺提供了GDB程序調(diào)試方法說明。本文檔主要演示基于TLIMX8-EVM評估板的GDB程序調(diào)試方法說明。如需其他平臺相關(guān)資料,請與我們聯(lián)系。
開發(fā)環(huán)境
Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機(jī):VMware15.1.0
Linux開發(fā)環(huán)境:Ubuntu18.04.4 64bit
U-Boot:U-Boot-2020.04
Kernel:Linux-5.4.70
Linux SDK:5.4.70_2.3.0
硬件平臺
TLIMX8-EVM評估板(NXP i.MX 8M Mini)
TLIMX8-EVM評估板

1調(diào)試環(huán)境搭建
確保已搭建好NXPi.MX 8M Mini SDK開發(fā)環(huán)境。若未完成搭建,請先參照產(chǎn)品資料用戶手冊目錄下的Linux開發(fā)環(huán)境搭建手冊,完成SDK開發(fā)包的安裝和配置。
然后進(jìn)入SDK安裝目錄,并執(zhí)行如下命令加載SDK環(huán)境變量。
Host# cd /home/tronlong/SDK/
Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

圖 1
如環(huán)境搭建正常,執(zhí)行如下命令可查看交叉編譯工具版本。
Host# aarch64-poky-linux-gcc -v

圖 2
2演示程序創(chuàng)建與編譯
執(zhí)行如下命令,新建一個(gè)GDB調(diào)試演示程序。
Host# mkdir test
Host# cd test/
Host# gedit test.c

圖 3
在tese.c文件中輸入如下代碼。
#include
void show() {
printf("show\n");
}
int main(int argc, char *argv[])
{
int arr[4] = {1, 2, 3, 4};
int i = 0;
for (i = 0; i < 4; i++) {
printf("arr[%d]: %d\n", i, arr[i]);
}
}
點(diǎn)擊Save,保存退出。

圖 4
執(zhí)行如下命令,修改test文件夾的權(quán)限。
Host# cd ..
Host# sudo chmod -R 777 test/

圖 5
執(zhí)行如下命令加載SDK環(huán)境變量,并進(jìn)行程序編譯。
備注:編譯時(shí)需添加-g參數(shù),編譯過程中的警告可忽略。
編譯完成后,將在test文件夾目錄下生成可執(zhí)行文件test。
Host# cd test/
Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux
Host# $CC -O0 -g test.c -o test

圖 6
評估板與PC機(jī)連接至同一個(gè)路由器后進(jìn)行上電,執(zhí)行如下命令通過網(wǎng)絡(luò)傳輸?shù)男问剑瑢⒕幾g后的可執(zhí)行文件test拷貝至評估板。
Target# ifconfig //查看評估板的IP地址

圖 7
Host# scp test [email protected]:/home/root //將可執(zhí)行文件拷貝至評估板“/home/root/”目錄下,密碼為空即可

圖 8
Target# ls -l //查看評估板接收的可執(zhí)行文件

圖 9
3調(diào)試程序運(yùn)行
執(zhí)行如下命令,確認(rèn)虛擬機(jī)的IP地址。
Host# ifconfig

圖 10
在評估板文件系統(tǒng)test文件所在路徑下,執(zhí)行如下命令運(yùn)行g(shù)dbserver程序,開啟監(jiān)聽。
備注:192.168.0.83為虛擬機(jī)的IP地址;1234為連接的端口號(自行設(shè)置);test為將要進(jìn)行調(diào)試的程序。如為Qt界面程序,則需在后面增加-qws參數(shù)。
Target# gdbserver 192.168.0.83:1234 test

圖 11
在PC機(jī)test文件所在路徑下,執(zhí)行如下命令加載SDK環(huán)境變量,并運(yùn)行GDB調(diào)試程序。
Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux
Host# aarch64-poky-linux-gdb test //aarch64-poky-linux-gdb為SDK交叉編譯環(huán)境下的GDB交叉編譯工具鏈,test為將要進(jìn)行調(diào)試的程序

圖 12
執(zhí)行如下命令,連接評估板。192.168.0.17為評估板的IP地址,請以實(shí)際情況為準(zhǔn)。
(gdb) target remote 192.168.0.17:1234

圖 13
同時(shí),串口調(diào)試終端顯示連接成功的相關(guān)信息。

圖 14
4程序調(diào)試
本章節(jié)主要演示GDB調(diào)試的幾個(gè)常用命令的使用方法。
4.1list命令
用于列出源碼,簡寫:l。

圖 15
4.2break命令
用于設(shè)置斷點(diǎn),簡寫:b。

圖 16
4.3info breakpoints命令
用于顯示斷點(diǎn)的狀態(tài),簡寫:infob。

圖 17
4.4continue命令
用于恢復(fù)程序執(zhí)行,簡寫:c。此命令使GDB恢復(fù)程序的執(zhí)行,直至斷點(diǎn)觸發(fā)或程序結(jié)束。

圖 18
以上調(diào)試過程在第二個(gè)斷點(diǎn)中,每輸入一次c命令,將會(huì)依次打印arr數(shù)組的元素值,然后程序執(zhí)行結(jié)束。同時(shí),串口調(diào)試終端打印相關(guān)信息。

圖 19
4.5print命令
用于打印變量或者變量地址,簡寫:p。

圖 20
以上調(diào)試過程在每處斷點(diǎn)中,使用print命令打印變量i的值。同時(shí),串口調(diào)試終端打印相關(guān)信息。

圖 21
4.6quit命令
退出GDB模式,簡寫:q。當(dāng)程序調(diào)試完成后,使用quit命令退出GDB調(diào)試。

圖 22
同時(shí),串口調(diào)試終端打印相關(guān)信息。

圖 23
-
ARM處理器
+關(guān)注
關(guān)注
6文章
361瀏覽量
42439 -
嵌入式開發(fā)
+關(guān)注
關(guān)注
18文章
1069瀏覽量
48537 -
gdb
+關(guān)注
關(guān)注
0文章
60瀏覽量
13534
發(fā)布評論請先 登錄
通過御控APP實(shí)現(xiàn)PLC遠(yuǎn)程調(diào)試與遠(yuǎn)程監(jiān)控
PLC遠(yuǎn)程調(diào)試指南:如何實(shí)現(xiàn)PLC遠(yuǎn)程上下載、控制與跨國運(yùn)維
Arm助力開發(fā)者加速遷移至Arm架構(gòu)云平臺 Arm云遷移資源分享
STM32CubeIDE無法啟動(dòng)正常調(diào)試是哪里出了問題?
為什么會(huì)報(bào)錯(cuò)Could not determine GDB version using command: arm-none-eabi-gdb --version?
解鎖工業(yè)新效能:網(wǎng)關(guān)助力 PLC 遠(yuǎn)程調(diào)試

設(shè)備遠(yuǎn)程維護(hù)如何實(shí)現(xiàn)?遠(yuǎn)程維護(hù)平臺的功能特點(diǎn)

[迅為RK3568開發(fā)板]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗(yàn)QT跨平臺能力
![[迅為RK3568開發(fā)板]非科班也能<b class='flag-5'>玩轉(zhuǎn)</b>Android應(yīng)用,體驗(yàn)QT跨<b class='flag-5'>平臺</b>能力](https://file1.elecfans.com/web3/M00/02/F1/wKgZO2diirGAPoENAACpt0CV3xc346.png)
PLC遠(yuǎn)程維護(hù)IoT平臺是什么
PLC遠(yuǎn)程下載網(wǎng)關(guān) SSF-BOX-100 :輕松應(yīng)對PLC 遠(yuǎn)程調(diào)試\程序下載

Arm推出GitHub平臺AI工具
天拓四方:PLC遠(yuǎn)程調(diào)試網(wǎng)關(guān)簡介
PLC遠(yuǎn)程編程調(diào)試平臺是什么

評論