OpenWRT下的GDB远程调试
编写的程序部署到OpenWRT上出错,打日志是一个好办法,但是今天遇到的情况,日志也不能 显示出正确的程序流程,实在诡异,因此决定尝试调试器。
路由器中的存储空间十分有限,OpenWRT的包管理器opkg提供的GDB占用大约1.5MB空间。路由器 本身有8M的存储空间,目前只剩200KB了,GDB的大小不能接受。相比之下,GDBServer的大小 不到100KB,这是可以接受的。
下面是使用GDBServer远程调试的方法:
路由器端
安装GDBServer
opkg install gdbserver
进入目录,运行GDBServer,监听到网络端口
gdbserver 192.168.8.1:4455 tubed
计算机端
根据OpenWRT SDK的位置设置环境变量
进入被调试文件的所在目录,这是为了向GDB提供程序的调试信息
指定被调试的程序文件,启动gdb
mips-openwrt-linux-gdb tubed
在GDB中连接远程调试器
target remote 192.168.8.1:4455
如果连接成功,则此时就可以像平常一样使用GDB来调试程序了,不过调试目标是位于路由器的 程序。使用这个方法可以很轻易的定位到程序错误的位置。毕竟是动态调试。话说回来,既然 可以做到GDB远程调试,也许可以把部署、调试的环节通过Makefile整合到Xcode项目中来?
有空可以试一下看看。