使用gdbserver和gdb调试代码

原创 2015年07月07日 11:36:40

涉及到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


相关文章推荐

使用QT CREATOR2.4.1创建工程,并在LINUX上运行,能编译,GDB+GDBSERVER调试(例子工程,dvrgui)

把dvrrdk拷贝到/usr/local/DVRRDK_03.00.00.00/target/rfs_816x改名为dvr 如做完qt 环境配置(参考LZ上篇文章)直接打开Q...

使用gdbserver+arm-linux-gdb 调试应用程序

1.下载gdb的源码 2.编译:cd gdb-7.10.1 ./configure --target=arm-linux --prefix=$PWD/installed -v解释一下: –targ...
  • k7arm
  • k7arm
  • 2017年02月07日 15:53
  • 640

使用gdb、gdbserver在ARM-Linux下进行远程调试

一、下载gdb-6.4.tar.gz源代码 http://ftp.gnu.org/gnu/gdb/ 二、编译 GDB 2.1、编译arm-linux-gdb #tar zxvf gdb-6.4...
  • heanyu
  • heanyu
  • 2011年03月24日 21:17
  • 1782

S3C2440 windows下使用jlink gdbserver,arm-none-eabi-gdb进行裸机程序编写调试

一开始是学stm32的,一直用MDK下载调试程序,非常方便。后来转学嵌入式Linux,在Linux下进行u-boot和Linux内核的移植,一直没有用到硬件调试功能,都是通过打印串口信息或者led来调...

Android动态调试so 使用 gdb + gdbserver 启动调试的过程

在网上找了好久才找到一份能按照上面的步骤顺利的进行调试的文档。文档在最后有链接地址。 大概说一些 gdb + gdbserver 在Android 下进行动态调试so的步骤: 准备工作: 1、找...
  • fengvmu
  • fengvmu
  • 2015年07月11日 13:47
  • 1193

应用调试之使用gdb和gdbserver

一、调试原理 这里的gdb调试是在pc机上对在开发板上运行的程序进行调试。具体来说的话,在pc机上要运行gdb,在开发板上运行dbserver。gdb调试的时候,pc机上的gdb向开发板上的gdbs...

gdb的简单使用和gdb+gdbserver方式进行ARM程序调试

gdb的简单使用 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用gdbserver和gdb调试代码
举报原因:
原因补充:

(最多只允许输入30个字)