日韩精品电影一二区-精品久久久久久亚洲中文字幕-一区二区三区国产美女在线播放-欧美日韩在线观看你懂的-午夜精品一区二区三区的区别-久久精品娱乐亚洲领-欧美在线网站一区二区三区-在线观看91精品国产不卡-国产水滴盗摄一区二区

創(chuàng)龍首頁 >關于創(chuàng)龍 > 新聞資訊 > 技術文章

聯系我們

Contact Us

公司總機:020-8998-6280

技術熱線:020-3893-9734

技術郵箱:support@tronlong.com

銷售郵箱:sales@tronlong.com

ARM平臺如何玩轉GDB遠程調試?

2021/09/27

前  言

關于GDB工具

GDB工具是GNU項目調試器,基于命令行使用。和其他的調試器一樣,可使用GDB工具單步運行程序、單步執(zhí)行、跳入/跳出函數、設置斷點、查看變量等等,它是UNIX/LINUX操作系統下強大的程序調試工具。GDB支持多種語言,包括Ada、匯編、C/C++、D、Fortran、GO、Objective-C、OpenCL、Modula-2、Pascal和Rust。


GDB具有一種“遠程”模式,此種模式多半是在為嵌入式系統進行調試時使用,遠程操作指的是:GDB在一部機器內運行,而要進行調試的程序是在另一部機器上運行,支持TCP/IP協議傳輸的各種網絡,在TCP/IP網絡及協議上再加搭傳輸GDB專有的調試操作通信協議,如此便能進行遠程調試。


創(chuàng)龍科技已基于IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平臺提供了GDB程序調試方法說明。本文檔主要演示基于TLIMX8-EVM評估板的GDB程序調試方法說明。如需其他平臺相關資料,請與我們聯系。


開發(fā)環(huán)境

Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit

虛擬機: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)


圖 2 TLIMX8-EVM評估板




案例源碼、詳細說明請掃描下方二維碼或點擊下載鏈接:

http://site.tronlong.com/pfdownload



1 調試環(huán)境搭建

確保已搭建好NXP i.MX 8M Mini SDK開發(fā)環(huán)境。若未完成搭建,請先參照產品資料用戶手冊目錄下的Linux開發(fā)環(huán)境搭建手冊,完成SDK開發(fā)包的安裝和配置。

然后進入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í)行如下命令,新建一個GDB調試演示程序。

Host# mkdir test

Host# cd test/

Host# gedit test.c


圖 3


在tese.c文件中輸入如下代碼。


#include <stdio.h>

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]);

    }

}


點擊Save,保存退出。



圖 4


執(zhí)行如下命令,修改test文件夾的權限。

Host# cd ..

Host# sudo chmod -R 777 test/




圖 5


執(zhí)行如下命令加載SDK環(huán)境變量,并進行程序編譯。

備注:編譯時需添加-g參數,編譯過程中的警告可忽略。

編譯完成后,將在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機連接至同一個路由器后進行上電,執(zhí)行如下命令通過網絡傳輸的形式,將編譯后的可執(zhí)行文件test拷貝至評估板。

Target# ifconfig //查看評估板的IP地址




圖 7


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




圖 8


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




圖 9


3 調試程序運行

執(zhí)行如下命令,確認虛擬機的IP地址。

Host# ifconfig




圖 10


在評估板文件系統test文件所在路徑下,執(zhí)行如下命令運行gdbserver程序,開啟監(jiān)聽。

備注:192.168.0.83為虛擬機的IP地址;1234為連接的端口號(自行設置);test為將要進行調試的程序。如為Qt界面程序,則需在后面增加-qws參數。

Target# gdbserver 192.168.0.83:1234 test




圖 11


在PC機test文件所在路徑下,執(zhí)行如下命令加載SDK環(huán)境變量,并運行GDB調試程序。

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為將要進行調試的程序




圖 12


執(zhí)行如下命令,連接評估板。192.168.0.17為評估板的IP地址,請以實際情況為準。

(gdb) target remote 192.168.0.17:1234




圖 13


同時,串口調試終端顯示連接成功的相關信息。




圖 14


4 程序調試

本章節(jié)主要演示GDB調試的幾個常用命令的使用方法。

4.1 list命令

用于列出源碼,簡寫:l。




圖 15


4.2 break命令

用于設置斷點,簡寫:b。




圖 16


4.3 info breakpoints命令

用于顯示斷點的狀態(tài),簡寫:info b。




圖 17


4.4 continue命令

用于恢復程序執(zhí)行,簡寫:c。此命令使GDB恢復程序的執(zhí)行,直至斷點觸發(fā)或程序結束。




圖 18


以上調試過程在第二個斷點中,每輸入一次c命令,將會依次打印arr數組的元素值,然后程序執(zhí)行結束。同時,串口調試終端打印相關信息。




圖 19


4.5 print命令

用于打印變量或者變量地址,簡寫:p。




圖 20


以上調試過程在每處斷點中,使用print命令打印變量i的值。同時,串口調試終端打印相關信息。




圖 21


4.6 quit命令

退出GDB模式,簡寫:q。當程序調試完成后,使用quit命令退出GDB調試。




圖 22


同時,串口調試終端打印相關信息。




圖 23


Copyright © 2013~2025 廣州創(chuàng)龍電子科技有限公司 All Rights Reserved  | 粵ICP備15055271號