在板子中调试GDB的方法

描述

在板子中调试

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

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

实操如下:

gdb

博主在 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 是要调试的可执行文件。输入以后开发板输出信息如图所示:

gdb

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

arm-linux-gnueabihf-gdb gdbtest

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

结果如图所示:

gdb

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

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

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

gdb

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

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

全部0条评论

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

×
20
完善资料,
赚取积分