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

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

3天内不再提示

在板子中调试GDB的方法

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-27 16:37 次阅读

在板子中调试

上面的方法是直接在 ubuntu 调试源代码,只能查看源代码的错误,如果你想要你的应用程序在板子中运行,想打出它在板子上运行的 bug,就要采用下面的方法。

一般的桌面 Linux 系统,比如 ubuntu、centos 等,我们可以直接运行 gdb 来调试程序。但是嵌入式芯片性能一般比较弱,所以直接在嵌入式系统中运行 gdb 不太现实(性能强大的嵌入式芯片可以这么做)。嵌入式系统中一般在 PC 端运行 gdb 工具,源码也是在 PC 端,源码对应的可执行文件放到开发板中运行。为此我们需要在开发板中运行 gdbserver,通过网络与 PC 端的 gdb 进行通信。因此要想在 PC 上通过 gdb 调试嵌入式程序,那么需要两个东西:gdb 和 gdbserver,其中 gdb 是运行在 PC 上的,gdbserver 需要我们移植到开发板上。

实操如下:

图片

博主在 ubuntu 中为 imx6ull 开发板安装过交叉编译工具链,该工具链自带了 gdb 调试工具。包含了 arm-linux-gnueabihf-gdb 和 gdbserver。

将 gdbserver 拷贝到开发板 /bin 目录下。将上文编译出来的 gdbtest 文件拷贝到板子中。

确保 ubuntu和开发板可以进行网络通信。在开发板中输入如下命令:

gdbserver 192.168.31.121:2001 gdbtest //启动开发板上的 gdbserver

192.168.31.121 为 ubuntu 的 IP 地址,2001 是端口号, 可以任意给一个端口号,gdbtest 是要调试的可执行文件。输入以后开发板输出信息如图所示:

图片

接着在 ubuntu 中输入如下命令启动 gdb 调试工具:

arm-linux-gnueabihf-gdb gdbtest

如果该命令不能运行,请将你交叉编译工具链的目录配置到 /etc/profile 文件最后,并且在命令行输入 source /etc/profile,其实就是让你的环境变量生效。

结果如图所示:

图片

图中最下面的(gdb)行用于输入命令,输入如下命令连接到开发板上:

target remote 192.168.31.207:2001   //连接到开发板上

上述命令表示连接到开发板上,其中 192.168.31.207 就是开发板 IP 地址,2001 就是开发板 gdbserver 设置的端口号。连接成功以后开发板中的 gdbserver 就会提示连接信息,

图片

连接成功以后就可以 在 ubuntu 上进行代码调试了,调试的文件是在板子上运行的 ,可以复现你想要的信息,比如可以打出你的应用程序在板子上的 bug。

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

    关注

    4983

    文章

    18286

    浏览量

    288498
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94021
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13160
收藏 人收藏

    评论

    相关推荐

    使用GDB调试Linux应用程序

    本篇讲解使用GDB调试Linux应用程序,以下以 `hellowld.c` 为例介绍 GDB调试入门。
    发表于 06-27 15:48 338次阅读

    RK3568-GDB程序调试方法说明

    RK3568-GDB程序调试方法说明
    的头像 发表于 01-19 16:16 913次阅读
    RK3568-<b class='flag-5'>GDB</b>程序<b class='flag-5'>调试</b><b class='flag-5'>方法</b>说明

    TLT507-GDB程序调试方法说明

    TLT507-GDB程序调试方法说明
    的头像 发表于 01-26 10:11 515次阅读
    TLT507-<b class='flag-5'>GDB</b>程序<b class='flag-5'>调试</b><b class='flag-5'>方法</b>说明

    ubuntu下GDB调试GDB简介

    操作系统,GDB可以运行在UNIX、Linux甚至Microsoft Windows。GDB可以调试C、C++、Objective-C、Pascal、Ada等语言编写的程序;被调试的程
    发表于 12-21 08:20

    如何在Ubuntu下使用QT通过gdb远程调试板子

    我想在Ubuntu下使用QT通过gdb远程调试板子,结果gdb编译后无法板子上运行。虚拟机:L
    发表于 01-10 06:01

    使用GDB对RT-Smart进行代码调试方法

    开发的过程,有时没有现成的图形化开发环境,想要进行调试时,需要使用 GDB 直接进行代码调试。本文档记录了以 RT-Thread qem
    发表于 03-15 11:28

    OpenHarmony系统使用gdb调试init

    和增加调试打印,初始化过程系统崩溃的问题就更难定位了。如果能使用gdb调试init,会极大提高定位效率。本文将详细阐释二次启动的标准系统如何使用g
    发表于 01-10 11:34

    GDB调试命令手册

    GDB调试命令手册,感兴趣的可以下载看看。
    发表于 11-05 16:36 9次下载

    嵌入式Linux的GDB调试环境建立

    目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。    一、建立安装gdb组件    从ftp://ft
    发表于 04-02 14:33 396次阅读

    Linux应用的GDB调试的原理及过程分析

    GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer。在应用程序调试
    发表于 03-05 09:44 3189次阅读
    Linux应用的<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>的原理及过程分析

    GDB串行协议概述 GDB Server的作用

    。 所以GDB Server可以是一个openocd,或者JTAG等等实际的外设模块,和目标板子进行连接后,可以调试芯片
    的头像 发表于 08-10 10:10 4817次阅读
    <b class='flag-5'>GDB</b>串行协议概述 <b class='flag-5'>GDB</b> Server的作用

    在ubuntu中调试GDB

    的 gcc 编译器即可,注意需要加 -g 选项,才能使用 gdb 调试 arm-linux-gnueabihf-gcc gdbtest .c -o gdbtest -g //编译测试程序,注意-g 选项
    的头像 发表于 07-27 16:31 642次阅读
    在ubuntu中<b class='flag-5'>调试</b><b class='flag-5'>GDB</b>

    GDB调试工具的原理

    一、GDB调试工具的原理 1.1 未执行进程调试 启用gdb调试运行gdb ./test的时候,
    的头像 发表于 11-09 17:04 325次阅读
    <b class='flag-5'>GDB</b><b class='flag-5'>调试</b>工具的原理

    如何使用GDB调试工具

    在对应程序目录中使用下面的命令 gdb test 2、调试已经开始运行的程序进程 调试已经开始运行的程序进程,首先先用top命令查看运行的程序进程的pid如下: 比如我要加载的程序
    的头像 发表于 11-09 17:17 341次阅读
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>工具

    如何使用linux下gdb调试python程序

    如何使用linux下gdb调试python程序  在Linux下,可以使用GDB(GNU调试器)来调试Python程序。
    的头像 发表于 01-31 10:41 473次阅读