https://blog.csdn.net/fz835304205/article/details/17166973
一、配置编译及安装下载
1. 到http://www.gnu.org/software/gdb下载gdb-7.6.tar.gz
2. 解压
#tar xzvf /tmp/gdb-7.6.tar.gz
3. 建立配置文件、编译
#cd gdb-7.6
./configure --target=arm-linux --prefix=/usr/local/gdb -v
#make
#sudo make install
(--target配置gdb的目标平台,--prefixp指定了编译结果的存放位置,也就是安装目录。编译完后可以在/usr/local/gdb/bin目录下找到可执行的arm-linux -gdb, arm-linux-run。
添加环境变量
#gedit ~/.bashrc
export PATH=/usr/local/arm/gdb/bin:$PATH
4. gdbserver的移植
gdbserver要用到gdb源码目录下的一些头文件,因此无法在gdb源码目录之外编译文件。
进入gdb/gdbserver目录:
必须在gdbserver目录下运行配置命令,此时才能用相对路径
#./configure --target=arm-linux --host=arm-linux
(--target=arm-linux表示目标平台,--host表示主机端运行的是arm-linux-gdb,不需要配置—prefix,因为gdbserver不在主机端安装运行)
# make CC=/home/linux-138/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc
gdb-7.6/gdb/gdbserver/linux-arm-low.c中:
#ifdef HAVE_SYS_REG_H
//#include (注释这一行)
#endif
然后再重新make
(这一步要指定你自己的arm-linux-gcc的绝对位置,我试过相对的不行,提示make: arm-linux-gcc: Command not found,可好多人都用的相对路径,即直接赋值arm-linux-gcc,可采取make时传递参数,也可以直接修改gdbserver目录下的Makefile文件中的环境变量CC)
./gdbserver: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
缺少动态链接库
make CC=/home/linux-138/L138_SDK/linux-devkit/bin/arm-arago-linux-gnueabi-gcc CFLAGS=-static
重新编译ok
- 调试程序
通过加-g参数 交叉编译带调试信息的程序
$ arm-linux-gcc -g ipcam.c -o ipcam
拷贝到设备端后,使用gdbserver打开程序
$gdbserver :10000 ipcam 主机使用arm-linux-gdb调试程序
$ arm-linux-gdb ipcam
输入gdb远程调试指令
(gdb) target remote :10000 这时,设备端打印
Remote debugging from host 192.168.1.102
说明远程调试已经建立起,可以开始在host端调试
- gdb指令可真多,我不是牛人,自认没那技术通过指令就能调试出想要的结果,结合eclipse的图形调试界面快速寻找答案才是我想要的
gdbserver编译安装完成,接下来该gdb本地调试了,由于gdb命令界面的调试一个大的工程还是很不爽的,那就借助eclipse强大的功能来协助调试吧,整整搞了两天才把这个环境搭建起来,linux下很多东西和windos下不一样,windos下的调试环境一般很友好,不用费什么周折,但linux下有些东西别人的一句话就够你折腾好几天了,趁年轻再折腾折腾,网上的大都比较老,我的是eclipse3.7 gdb7.6 有的地阿芳还是不一样的,呵呵。
想起一句很重要的话,在linux下一般遇到问题搞了好久没搞定,那就升级新版本吧,名言呀,切记。
一,建好eclipse工程
不多说了,网上资料一箩筐,不会的自己补课。
二 设置debug选项
run->debug configurations
在c remote application 菜单下双击,新建mydebug
c application选项为要调试的应用程序
gdb debugger选择编译的arm-linux-gdb
在下面using gdb manual remote 单击 select other
选择 manual remote
选择tcp 填入开发板ip和端口
三 开始调试
开发板端
root@FZ:/# gdbserver 192.168.0.105:5555 ./test