使用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


老戚的黑科技之gdb与gdbServer的使用

一、调试原理 有很多时候我们需要把编译出来的进程运行在另外一台机子上,可能是嵌入式开发板,也可能是另一台linux虚拟机,由于某种原因,在起gdb单步调试的时候关联不到源码,这会让我们很不爽。今天将...
  • yeyichao
  • yeyichao
  • 2016年01月29日 10:11
  • 3626

eclipse gdb gdbserver 远程调试

我们在 Linux 主机中搭建我们的开发环境,使用 Ubuntu 10.04 LTS 为例。 搭建应用开发环境 安装 JRE Eclipse依赖于Java 环境,所以必须...
  • linuxarmsummary
  • linuxarmsummary
  • 2015年04月10日 10:00
  • 8403

配置GDB+GdbServer远程调试环境

gdb+gdbserver
  • IT_BOY__
  • IT_BOY__
  • 2017年08月12日 21:55
  • 366

使用gdbserver和gdb调试代码

本文主要简单记录一下使用gdbServer进行远程调试的方法,以便日后查询。详细的过程,可能日后还会更新。...
  • jl2011
  • jl2011
  • 2015年07月07日 11:36
  • 307

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

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

gdb+gdbserver 是调试目标板的常用方法.

gdb+gdbserver 是调试目标板的常用方法. 看了网上的一些资料,加上我自己的一些体会, 写个完整的记录吧:我的环境如下:HOST 192.168.0.33  Target: 192.16...
  • dllbl
  • dllbl
  • 2008年08月26日 09:23
  • 4164

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

gdb的简单使用 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GD...
  • haifengid
  • haifengid
  • 2016年06月29日 19:13
  • 1122

使用gdb+gdbserver调试嵌入式程序

gdb+gdbserver 调试嵌入式程序的例子 如果环境没有提供交叉编译程序gdbserver , 可以参考交叉编译步骤 1.arm 上的一个程序monitorAll 是我调试的例子, ...
  • hejinjing_tom_com
  • hejinjing_tom_com
  • 2017年05月10日 12:06
  • 376

gdb+gdbserver调试arm-linux程序

gdb+gdbserver调试arm-linux程序  分类: LINUX 引用:http://www.xxlinux.com/linux/article/accidence/install/...
  • wzw88486969
  • wzw88486969
  • 2014年01月21日 14:25
  • 1417

GDBSERVER 用于omapl138调试---过程详细分析

注:发现有人引用本文,颇感荣幸! 请注明出处 http://blog.csdn.net/liufengl138/article/details/7634529 用了一番功夫研究GDBS...
  • liufengl138
  • liufengl138
  • 2012年06月05日 15:14
  • 2355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用gdbserver和gdb调试代码
举报原因:
原因补充:

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