关闭

使用gdbserver和gdb调试代码

标签: 调试gdbgdbserver嵌入式开发
236人阅读 评论(0) 收藏 举报
分类:

涉及到Linux开发,难免要使用gdb调试,在嵌入式开发时,调试板子上的程序,就需要使用gdbserver配合gdb进行调试了。本文仅做简单的记录,以便日后查询用。

 

首先要有gdbserver&gdb调试的环境,即板子上有gdbserver程序,而PC上有对应板子架构的版本的gdb。例如板子是arm架构的,本地则需要使用arm版本的gdb.

 

其次,调试的程序最好不要进行优化,否则调试时会出现各种不适应。如Android环境下,在Android.mk下加入-O0 -g选项,这样的话就很好对比代码了。

 

 

在板子上启动调试的程序,gdbserver boardIP:Port  debugProgram ,例如我这里使用下面的命令来在板子上启动待调试的程序,

gdbserver 172.28.10.59:1234  system/bin/gdbtest

输入命令后,会有类似的提示:

Process system/bin/gdbtest created; pid = 3067

Listening on port 1234

表示系统已经启动了调试的程序,进程为3067,同时gdbserver1234端口启动监听。当我们在PC端连接到该地址和端口时,就可以进行调试了。

注意,这里待调试的程序要用没有经过优化的程序。

 

PC端启动gdb,命令如下gdb debugprogram

如我在本机上进行调试程序的命令如下

arm-linux-androideabi-gdb 

  ../out/target/product/XXX/obj/EXECUTABLES/gdbtest_intermediates/LINKED/gdbtest

可以看出,我调试的是Android平台下的程序,这里我要找到没有优化的可执行文件。

输入上面的命令后,便进入了gdb调试界面,在输入连接到gdbserver的命令前,我们可以做一些设置,如:

1. set solib-search-path ../out/target/product/XXX/symbols/ 该命令用于设置调试过程中需要加载动态库时的查找路径

2. directory      path 该命令用于设置源代码的路径

可能的设置有很多,当然这些设置也可以在连接到gdbserver后再设置。

 

PC端键入target remote IP:Port , 可以连接到板子的gdbserver。例如这里我使用的命令如下

target remote 172.28.10.59:1234

同时,在板子的终端,会出现类似下面的提示,表示有远程调试连接到板子,之后就可以调试了。

Remote debugging from host 172.28.10.2


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16838次
    • 积分:415
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:5篇
    • 译文:6篇
    • 评论:3条
    文章分类
    最新评论