国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—GDB程序调试方法说明

电子说

1.4w人已加入

描述

前  言

本指导文档适用开发环境:
 

Windows开发环境:Windows 7 64bit、Windows 10 64bit

虚拟机:VMware15.5.5

Linux开发环境:Ubuntu18.04.4 64bit

U-Boot:U-Boot-2018.07

Kernel:Linux-5.4.61、Linux-RT-5.4.61

LinuxSDK:T113_Tina5.0-V1.0(Linux)

GDB工具是GNU项目调试器,基于命令行使用。和其他的调试器一样,可使用GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是UNIX/LINUX操作系统下强大的程序调试工具。GDB支持多种语言,包括Ada、汇编、C/C++、D、Fortran、GO、Objective-C、OpenCL、Modula-2、Pascal和Rust。

GDB具有一种“远程”模式,此种模式多半是在为嵌入式系统进行调试时使用,远程操作指的是:GDB在一部机器内运行,而要进行调试的程序是在另一部机器上运行,支持TCP/IP协议传输的各种网络,在TCP/IP网络及协议上再加搭传输GDB专有的调试操作通信协议,如此便能进行远程调试。

演示程序创建与编译

在Ubuntu工作目录下执行如下命令,新建一个GDB调试演示程序。

Host# mkdir test

Host# cd test/

Host# vi test.c

gdb图 1

#include

void show() {

    printf("shown");

}

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]: %dn", i, arr[i]);

    }

    show();

    return 0;

}

执行如下命令,进行程序编译,编译完成将会生成test可执行程序。

备注:编译时需添加-g参数,生成的可执行文件才带有调试信息。若使用eMMC配置评估板,请将命令中的"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

Host# /home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc -g test.c -o test

gdb图 2

评估板与PC机连接至同一个路由器后进行上电,将编译生成的可执行文件test拷贝至评估板文件系统任意目录下。

Target# ls

gdb图 3

调试程序运行

执行如下命令,查看虚拟机的IP地址。

Host# ifconfig

gdb图 4

在评估板文件系统test文件所在路径,执行如下命令运行gdbserver程序,开启监听。

备注:192.168.1.51为Ubuntu的IP地址;1234为连接的端口号(自行设置);test为将要进行调试的程序。

Target# gdbserver 192.168.1.51:1234 test

gdb图 5

在虚拟机test文件所在路径下,执行如下命令运行GDB调试程序。

备注:若使用eMMC配置评估板,请将命令中的"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

Host# /home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gdb test

gdb图 6

执行如下命令,连接评估板。192.168.0.211为评估板的IP地址,请以实际情况为准。

(gdb) target remote 192.168.0.211:1234

gdb图 7

同时,串口调试终端显示连接成功的相关信息。

gdb图 8

程序调试

本章节主要演示GDB调试的几个常用命令的使用方法。

list命令

用于列出源码,简写:l。

gdb图 9

break命令

用于设置断点,简写:b。

分别在main函数和第13行设置断点。

gdb图 10

info breakpoints命令

用于显示断点的状态,简写:info b。

gdb图 11

continue命令

用于恢复程序执行,简写:c。此命令使GDB恢复程序的执行,直至断点触发或程序结束。

gdb图 12

以上调试过程在第二个断点中,每输入一次c命令,将会依次打印arr[]数组的元素值,然后程序执行结束。同时,串口调试终端打印相关信息。

gdb图 13

print命令

用于打印变量或者变量地址,简写:p。

设置断点后,可依次打印当前变量i的值。

gdb图 14

以上调试过程在每处断点中,使用print命令打印变量i的值。同时,串口调试终端打印相关信息。

gdb图 15

quit命令

退出GDB模式,简写:q。当程序调试完成后,使用quit命令退出GDB调试。

gdb图 16

同时,串口调试终端打印相关信息。

gdb图 17



审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分