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。

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

    关注

    5082

    文章

    19116

    浏览量

    304957
  • 开发板
    +关注

    关注

    25

    文章

    5040

    浏览量

    97408
  • gdb
    gdb
    +关注

    关注

    0

    文章

    60

    浏览量

    13297
收藏 人收藏

    评论

    相关推荐

    使用GDB调试Linux应用程序

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

    RK3568-GDB程序调试方法说明

    RK3568-GDB程序调试方法说明
    的头像 发表于 01-19 16:16 1844次阅读
    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 979次阅读
    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 1676次阅读

    使用 GDB 调试多进程程序

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

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

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

    GDB调试原理是什么?

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

    OpenHarmony系统使用gdb调试init

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

    ubuntu调试GDB

    ubuntu 调试 gdbtest.c # include # include int main ( int argc, char *argv[]) { unsigned int times
    的头像 发表于 07-27 16:31 1056次阅读
    <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 940次阅读
    <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 852次阅读
    如何使用<b class='flag-5'>GDB</b><b class='flag-5'>调试</b>工具

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

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