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。

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

    关注

    5186

    文章

    20145

    浏览量

    328763
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113273
  • gdb
    gdb
    +关注

    关注

    0

    文章

    61

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用GDB调试Linux应用程序

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

    RK3568-GDB程序调试方法说明

    RK3568-GDB程序调试方法说明
    的头像 发表于 01-19 16:16 3237次阅读
    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 1574次阅读
    TLT507-<b class='flag-5'>GDB</b>程序<b class='flag-5'>调试</b><b class='flag-5'>方法</b>说明

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

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

    GDB调试命令手册

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

    gdb调试器解析

    3.4 gdb调试调试是所有程序员都会面临的问题。如何提高程序员的调试效率,更好、更快地定位程序的问题从而加快程序开发的进度,是大家都
    发表于 10-18 13:49 1次下载

    Linux如何使用gdb调试C程序?

    通俗的讲,GDB 可以让你看到程序执行过程时的内部流程,并帮你明确问题的所在。我们将在下一节通过一个有效的示例来讨论 GDB 调试器的用法,但在此之前,我们先来探讨一些之后对你有帮助
    发表于 04-28 15:37 1910次阅读

    使用 GDB 调试多进程程序

    的特点或者其他一些辅助手段来达到目的。此外,GDB较新内核上加入一些多进程调试支持。接下来我们详细介绍几种方法,分别是 follow-fork-mode
    发表于 04-02 14:33 847次阅读

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

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

    GDB调试原理是什么?

    一、前言这篇文章来聊聊大名鼎鼎的GDB,它的豪门背景咱就不提了,和它的兄弟GCC一样是含着金钥匙出生的,GNU的家族的地位不可撼动。相信每位嵌入式开发工程师都使用过gdb
    的头像 发表于 12-18 15:17 6399次阅读

    OpenHarmony系统使用gdb调试init

    。如果能使用gdb调试init,会极大的提高定位效率。 本文简单描述了一下L2二次启动的系统如何使用gdb调试init 首先将gdb打包到系
    的头像 发表于 12-26 12:10 1463次阅读

    ubuntu调试GDB

    ubuntu 调试 gdbtest.c # include # include int main ( int argc, char *argv[]) { unsigned int times
    的头像 发表于 07-27 16:31 1724次阅读
    <b class='flag-5'>在</b>ubuntu<b class='flag-5'>中</b><b class='flag-5'>调试</b><b class='flag-5'>GDB</b>

    GDB调试工具的原理

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

    如何使用GDB调试工具

    qemu-system-x86的pid为269427,则用下面的命令将进程附加到GDB调试 gdb attach 269427 #gdb attach [进程号] 或者先打开
    的头像 发表于 11-09 17:17 1990次阅读
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>工具

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

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