Linux应用调试使用应用调试使用gdb和和gdbserver命令详解命令详解
主要介绍了Linux应用调试使用gdb和gdbserver的相关资料,需要的朋友可以参考下
1.gdb和和gdbserver调试原理调试原理
通过linux虚拟机里的gdb,来向开发板里的gdbserver发送命令,比如设置断点,运行setp等,然后开发板上的gdbserver收到命令后,
便会执行应用程序做相应的动作,来实现调试的功能
和之前学的裸板GDB调试 一样,只不过之前学的是在win下的,本次是在linux里的gdb
1.1同样同样,它们都会需要一个带调试信息的编译文件它们都会需要一个带调试信息的编译文件.
通过Makefile里的arm-linux-gcc -g 来的, -g:表示编译文件里包含gdb调试信息
1.2为什么需要调试信息的编译文件为什么需要调试信息的编译文件?
比如读开发板的应用程序里的变量a:
首先gdb通过应用程序的带调试信息的编译文件,来找出变量a存的地址位置
然后将地址发送给开发板里的gdbserver,来读出a地址的值
2.安装安装gdb和和gdbserver
首先进入官网下载gdb-7.4: http://ftp.gnu.org/gnu/gdb/
2.1在虚拟机上安装在虚拟机上安装GDB:
# tar xjf gdb-7.4.tar.bz2 //解压
# cd gdb-7.4/ //进入gdb-7.4目录
#./configure --target=arm-linux
//GDB需要在pc本机里运行,并调试开发板里的应用程序,所以--target设为arm-linux
#make //编译
#mkdir tmp
#make install prefix=$PWD/tmp //安装到./tmp目录下
sudo cp tmp/bin/arm-linux-gdb /bin/ //复制到/bin目录下
/bin/arm-linux-gdb -v //-v: 确定一下gdb的版本VID,是否是7.4
2.2 在开发板上安装在开发板上安装GDBServer:
cd gdb/gdbserver/ //在gdb-7.4目录下输入
./configure --target=arm-linux --host=arm-linux //设GDBServer的工作环境
make //编译
出现以下错误:
指在linux-arm-low.c里,没有找到PTRACE_GETSIGINFO 定义
2.3 解决解决:
1)
#echo $PATH //来查看PATH环境变量
找到编译器gcc位于/work/tools/gcc-3.4.5-glibc-2.3.6/bin
2)
#cd /work/tools/gcc-3.4.5-glibc-2.3.6/
# grep "PTRACE_GETSIGINFO" * -nR
在gcc根目录下,搜索到在linux/ptrace.h中定义: