准备:
宿主机必须安装有arm交叉编译工具,即宿主机可以编译目标机的运用程序;
目标机单板和宿主主机之间连接好串口线或网线或WIFI;
编译程序,记得gcc加上-g选项;
可执行程序主机和单板各存一份;
1.下载gdb源码包:
http://ftp.gnu.org/gnu/gdb/
解压:tar xzvf gdb-6.6.tar.gz
cd gdb-6.6
mkdir -p armgdb/build
2.然后编译宿主gdb:(一般是你的编译服务器或者虚拟机服务器)
cd armgdb/build
执行:~/gdb-tool/gdb-6.6/./configure --target=arm-linux --disable-werror --prefix=/home/ltz/gdb-tool/gdb-6.6/armgdb
(注意为了防止编译出错一定要加上 --disable-werror)
make (注意是在armgdb/build目录编译)
make install
此时gdb-6.6/armgdb/bin里面生成arm-linux-gdb arm-linux-gdbtui arm-linux-run
3.编译目标机arm-linux-gdbserver
cd gdb-6.6/gdb/gdbserver
./configure --host=arm-linux --target=arm-linux --prefix=/home/ltz/gdb-tool/gdb-6.6/armgdb/gdbserver/
make
make install
然后在gdb-6.6/armgdb/gdbserver/bin里面能看到 arm-linux-gdbserver,再将arm-linux-gdbserver修改为gdbserver,添加可执行权限chmod u+x gdbserver
把该文件下载到目标机/lib目录下,与相关联的lib库一起,运行时可避免找不到相关联的库导致错误。
4.目标机执行:
./gdbserver 192.168.1.230:9000 ./xxxxfile(需要调试的文件)
(注意192.168.1.230为目标机的IP,9000端口号可以随便设置只要不冲突就行)
5.宿主机执行:
./arm-linux-gdb xxxxfile(需要调试的文件)
(gdb)target remote 192.168.1.230:9000
即可进行调试
调试或运行时报找不到文件libc.so.6 ld-linux.so.3等,报错
则:ltz@ltz-pc:/usr/local$ find ./ -name "libc.so.6"
./opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/sys-root/lib/libc.so.6 (缺失库所在的文件路径)
把缺失的lib路径加上如下:
(gdb)set solib-search-path /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/sys-root/lib/
(gdb) set solib-absolute-prefix /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/sys-root/lib/
gdb调试常用命令和方法:https://blog.csdn.net/awm_kar98/article/details/82840811
《完》