gdb调试技巧

       由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采gdb+gdbserver的方式进行调试。Gdbserver在目标系统中运行,gdb则在宿主机上运行。要进行GDB调试,目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序,一般linux发行版中都有一个可以运行的gdb,但开发人员不能直接使用该发行版中的gdb来做远程调试,而要获取gdb的源代码包,针对arm平台作一个简单配置,重新编译得到相应gdb。

一 :编译gdb
1、解压源码 tar xf gdb-8.1.tar.xz

2、建立gdb应用程序目录   mkdir gdb_lib

3、进入源码目录 cd gdb-8.1

4、配置 ./configure --target=arm-linux-uclibcgnueabi --enable-sim --enable-tui --prefix=/home/gdb_lib
--target :嵌入式的交叉编译工具链 --prefix :生成gdb程序目录

5、make

6、make install

7、去掉调试信息
    cd ../gdb_lib/bin
    strip arm-linux-uclibcgnueabi-gdb
    
二 、编译安装gdbserver
1、 cd gdb/gdbserver/

2、 ./configure --target=arm-linux-uclibcgnueabi --host=arm-linux-uclibcgnueabi

3、 make

4、 gdbserver目录下就生成了一个gdbserver可执行文件,拷贝到目标开发板上.

5、 去掉调试信息  arm-linux-uclibcgnueabi-strip gdbserver

三、调试
1、开发板上:
   /mnt # ./gdbserver 172.16.1.109:2345 queue_arm
          Process queue_arm created; pid = 803
          Listening on port 2345
          
          Remote debugging from host 172.16.1.109  /*连上之后打印*/
          说明:
          172.16.1.109:宿主机IP地址
          2345 监听端口开
          queue_arm 需要的调试程序(编译时加  -g 选项)
          
2、宿主机上 在gdb命令行运行  target remote 172.16.1.108:2345
dushuheng@sinovo-Soft:~/test_work$ arm-linux-uclibcgnueabi-gdb queue_arm
GNU gdb (GDB) 8.1
Copyright (C) 2016 Free Software Foundation, Inc.
(gdb) target remote 172.16.1.108:2345
Remote debugging using 172.16.1.108:2345
Reading /lib/ld-uClibc.so.0 from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /lib/ld-uClibc.so.0 from remote target...
Reading symbols from target:/lib/ld-uClibc.so.0...(no debugging symbols found)...done.
0xb6ff1e44 in _start () from target:/lib/ld-uClibc.so.0

(gdb)

三、总结

使用调试工具的技巧:确定位置--》寄存器值--》查看当前寄存器的状态(修改命令和参数),通常的方法:

1、printf

    我们在程序中怀疑的地方插入print语句来了解程序的运行流程控制流和变量值的改变。 它的缺点:需要进行程序编辑,添加'printf'语句,必须重新编译,重新运行来获得输出。

2、Proc/sys文件系统

  在某些情况下,我们需要弄清楚在一个运行在内核中的进程的状态和内存映射。为了获得这些信息,我们不需要在内核中插入任何代码。 相反,可以用 /proc 文件系统。在/proc的伪文件系统,保留系统启动运行就收集的运行时信息 (cpu信息, 内存容量等)。

3、GDB调试技巧:

3.1、运行程序

3.2、设置断点

3.3、打印变量、设置变量值

3.4、单步调试

。。。。

下载

 

100个gdb调试程序技巧

https://download.csdn.net/download/u010872301/10028367

 

 

 

 

你可能感兴趣的:(Userspace开发,gdb,调试工具,arm调试,调试技巧)