0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM平台如何玩转GDB远程调试?

Tronlong创龙科技 2021-09-28 18:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前 言

关于GDB工具

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专有的调试操作通信协议,如此便能进行远程调试。

创龙科技已基于IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平台提供了GDB程序调试方法说明。本文档主要演示基于TLIMX8-EVM评估板的GDB程序调试方法说明。如需其他平台相关资料,请与我们联系。

开发环境

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

虚拟机:VMware15.1.0

Linux开发环境: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调试环境搭建

确保已搭建好NXPi.MX 8M Mini SDK开发环境。若未完成搭建,请先参照产品资料用户手册目录下的Linux开发环境搭建手册,完成SDK开发包的安装和配置。

然后进入SDK安装目录,并执行如下命令加载SDK环境变量。

Host# cd /home/tronlong/SDK/

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

图 1

如环境搭建正常,执行如下命令可查看交叉编译工具版本。

Host# aarch64-poky-linux-gcc -v

图 2

2演示程序创建与编译

执行如下命令,新建一个GDB调试演示程序。

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

}

}

点击Save,保存退出。


图 4

执行如下命令,修改test文件夹的权限。

Host# cd ..

Host# sudo chmod -R 777 test/


图 5

执行如下命令加载SDK环境变量,并进行程序编译。

备注:编译时需添加-g参数,编译过程中的警告可忽略。

编译完成后,将在test文件夹目录下生成可执行文件test。

Host# cd test/

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# $CC -O0 -g test.c -o test

图 6

评估板与PC机连接至同一个路由器后进行上电,执行如下命令通过网络传输的形式,将编译后的可执行文件test拷贝至评估板。

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

图 7

Host# scp test root@192.168.0.17:/home/root //将可执行文件拷贝至评估板“/home/root/”目录下,密码为空即可

图 8

Target# ls -l //查看评估板接收的可执行文件

图 9

3调试程序运行

执行如下命令,确认虚拟机的IP地址。

Host# ifconfig

图 10

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

备注:192.168.0.83为虚拟机的IP地址;1234为连接的端口号(自行设置);test为将要进行调试的程序。如为Qt界面程序,则需在后面增加-qws参数。

Target# gdbserver 192.168.0.83:1234 test

图 11

在PC机test文件所在路径下,执行如下命令加载SDK环境变量,并运行GDB调试程序。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# aarch64-poky-linux-gdb test //aarch64-poky-linux-gdb为SDK交叉编译环境下的GDB交叉编译工具链,test为将要进行调试的程序

图 12

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

(gdb) target remote 192.168.0.17:1234

图 13

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

图 14

4程序调试

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

4.1list命令

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

图 15

4.2break命令

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

图 16

4.3info breakpoints命令

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

图 17

4.4continue命令

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

图 18

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

图 19

4.5print命令

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

图 20

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

图 21

4.6quit命令

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

图 22

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

图 23

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

    关注

    6

    文章

    361

    浏览量

    43382
  • 嵌入式开发
    +关注

    关注

    18

    文章

    1167

    浏览量

    50214
  • gdb
    gdb
    +关注

    关注

    0

    文章

    61

    浏览量

    13948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux Kernel 6.1 tools目录全解析 | RK平台ARM64交叉编译实战指南

      在瑞芯微( RK ) ARM64 平台嵌入式 Linux 开发、内核调试与硬件外设测试中, Linux 内核源码自带的 tools 目录 是官方标配的工具集合,涵盖性能分析、设备调试
    的头像 发表于 04-16 18:42 5319次阅读
    Linux Kernel 6.1 tools目录全解析 | RK<b class='flag-5'>平台</b><b class='flag-5'>ARM</b>64交叉编译实战指南

    如何实现对异地PLC的远程编程调试和上下载程序

    远程维护通道,让工程师在办公室即可完成异地PLC的编程、调试、上下载程序,实现“足不出户、运维全球”。 一、方案核心原理:安全透明的远程通信桥梁 “现场PLC+工业智能网关+设备维护快线+管理云
    的头像 发表于 03-31 14:15 210次阅读
    如何实现对异地PLC的<b class='flag-5'>远程</b>编程<b class='flag-5'>调试</b>和上下载程序

    能自主上网的工业远程调试模块怎么选?核心功能与选型标准

    在工程机械运维调试场景中统调试方式依赖技术人员去到现场外接调试线。上海英晖科技推出的E30M6203超级智能终端,凭借远程下载联机、自主联网、多协议兼容等特性,为工程机械
    的头像 发表于 03-06 10:22 200次阅读

    DR1平台Linux应用开发指南:含GDB调试、Python及MQTT实战

    本文为创龙科技DR1 系列评估板 Linux 应用开发手册,系统讲解开发环境搭建、GDB 调试、多类型应用案例及 MQTT 通信实现。核心内容包括 LinuxSDK 与工具链配置、GDB 远程
    的头像 发表于 01-05 16:48 4793次阅读
    DR1<b class='flag-5'>平台</b>Linux应用开发指南:含<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>、Python及MQTT实战

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板进行GDB调试

    GDB(GNU Project Debugger)是在Linux环境下功能全面的调试工具。它提供了一系列强大的调试功能,包括设置断点、单步执行、打印与观察变量、查看寄存器及堆栈信息等。在Linux软件开发的实践中,
    的头像 发表于 11-11 13:47 5374次阅读
    ElfBoard技术贴|如何在【RK3588】ELF 2开发板进行<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>

    蜂鸟的GDB调试时无法在断点处停止是什么原因?

    各位大佬们,我们使用GDB调试程序的时候,在main函数打上断点,然后在gdb中continue,程序并没有在main函数入口处停下?请问大佬知道原因吗?谢谢~
    发表于 11-07 06:15

    CAN总线远程调试工具介绍

    一种工程机械领域调试上的创新产品,可用于Codesys 源程序的无线下载联机、远程调试、故障诊断、CAN 总线数据在线监控、透传收发、数据采集、数据分析、远程控制等各种 CAN 总线通
    发表于 10-17 16:14 0次下载

    【干货分享】RT-Trace国产调试工具 | 技术集结

    专为嵌入式开发者打造的一款高性能、多功能的调试工具。它集成了实时系统跟踪、数据监控、GDB远程调试、Flash程序烧录、虚拟终端等多种功能于一体,支持通过WebU
    的头像 发表于 09-16 08:07 1039次阅读
    【干货分享】RT-Trace国产<b class='flag-5'>调试</b>工具 | 技术集结

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

    (Linux) GDB工具是GNU项目调试器,基于命令行使用。和其他的调试器一样,可使用GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是UNIX/LINU
    的头像 发表于 08-05 15:33 688次阅读
    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—<b class='flag-5'>GDB</b>程序<b class='flag-5'>调试</b>方法说明

    设备远程调试新利器:御控网关开启PLC高效运维新时代

    御控网关,专为设备远程调试,尤其是PLC(可编程逻辑控制器)的远程调试服务,凭借其卓越性能与广泛兼容性,支持绝大部分PLC远程
    的头像 发表于 06-24 17:22 780次阅读

    PLC远程维护平台有什么优点

    PLC远程维护平台是工业自动化领域中用于对PLC设备进行远程监控、诊断、维护和管理的系统,具有诸多显著优点,以下从不同维度展开介绍: 提升运维效率 快速响应故障 :传统运维方式下,当PLC设备出现
    的头像 发表于 06-11 16:04 728次阅读
    PLC<b class='flag-5'>远程</b>维护<b class='flag-5'>平台</b>有什么优点

    远程日志errDump调试功能实战教程:案例驱动的故障排查!

    通过真实案例场景,本教程将展示如何利用远程日志errDump调试功能定位系统崩溃、性能瓶颈等问题,从日志捕获到原因分析,手把手带您体验实战中的调试流程。 本文特别分享errDump功能
    的头像 发表于 06-09 16:51 852次阅读
    <b class='flag-5'>远程</b>日志errDump<b class='flag-5'>调试</b>功能实战教程:案例驱动的故障排查!

    通过御控APP实现PLC远程调试远程监控

    御控APP,通过移动化、智能化的手段,实现了PLC远程调试与监控,为工业生产带来了便捷与高效。
    的头像 发表于 06-04 09:49 773次阅读

    PLC远程调试指南:如何实现PLC远程上下载、控制与跨国运维

    在工业4.0时代,御控网关已为30000+企业提供远程调试服务。搜索访问【御控工业云平台】官网,获取《试用样机》及跨国设备调试方案,让您的设备运维效率猛增!
    的头像 发表于 05-21 09:12 1266次阅读

    基于RK3576开发板的远程桌面调试方法

    EASY EAI Orin-Nano可以基于MobaXterm的ssh远程桌面登录调试
    的头像 发表于 05-06 09:58 883次阅读
    基于RK3576开发板的<b class='flag-5'>远程</b>桌面<b class='flag-5'>调试</b>方法