对于路由器上调试程序。如果采用gdb的方式远程调试,那么需要编译gdbserver。并且上传到路由器当中。然后远端实现gdb调试功能。
主机是x86_64 。路由是mips架构。其他略有不同。总体是一样的
mipsel是小端模式。mips是大端模式
1编译gdb和gdbserver
一定要注意gdbserver的版本和gdb的版本,最好相互匹配,我测试的时候。同一个版本不是GDB编译问题就是GDBSERVER问题。只能分开采用不同版本。
编译器的版本也最好匹配。
GDBSERVER在GDB源码的 gdb/gdbserver目录
1.1编译GDB
GDB版本 GDB7.10
本机GCC编译器版本gcc5.4.0
cd /gdb7.10
mkdir bin
cd bin
../configure --target=mipsel-linux
make -j8
由于gdb在本机编译,本机执行,目标是mipsel。所以configure就是这样。
2
GDBSERVER版本 GDB7.7
交叉编译器gcc版本4.6.3 是openwrt编译好的工具链
cd /gdb/gdbserver
mdkir bin
cd bin
export CC=/home/xxx/src_file/openwrt_/malta/r2/bin/mipsel-openwrt-linux-gcc
export CXX=/home/xxx/src_file/openwrt_/malta/r2/bin/mipsel-openwrt-linux-g++
../configure --target=mipsel-linux --host=mipsel-linux
make -j8
gdbserver是运行在mips上。目标也是调试mips的。
编译完毕以后得到了gdbserver和gdb。注意编译gdbserver环境必须和路由器上的一样。否则gdb会找不到各种连接库。
在搭建好主机的ftp服务器以后
可以在路由中使用
wget ftp://admin:admin@192.168.1.100/filename下载文件。
下载完毕以后使用chmod+x来改变bin
使用gdbserver ip:port filename开启调试端口。
或者gdbserver 192.168.1.100 --attach processid
注意这里的ip是gdb所在的远程调试主机的ip
远端使用
./gdb
target remote ip:port
这里的ip是gbbserver的ip。也就是板子的ip