千里之行始于足下

OpenWRT下的远程调试

Posted on By Peter Yang

一、建立调试环境

  1. 配置编译OpenWRT a) make menuconfig 启动以下两项 Advanced configuration options (for developers) –> Toolchain options –> Build gdb Utilities –> gdbserver b) 编译 make V=99,如果已经编译过,则make toolchain/install 编译下gdb即可
  2. 编译待调试程序 a) make menuconfig 启动Advanced configuration options (for developers) –> Build options –> Enable debugging b) 编译程序 以snmpd为例 ,使用make package/net-snmp/compile去编译程序,生成带调试信息的snmpd,作为宿主机调试使用。

以上就是准备工作。下面简单介绍一下调试过程。

二、调试程序

1.启动目标机上的待调试程序 首先加载并启动编译好的OpenWRT系统,然后 gdbserver :

  1. 启动宿主机gdb (这里要修复一个bug,方法是:cd /staging_dir/; rmdir lib; ln -s ../toolchain-_/lib lib)。 cd /build_dir/toolchain-_/gdb-6.3/gdb ./gdb -- 启动
  2. 设置gdb,并启动调试程序 1) set solib-absolute-prefix /staging_dir/ 2) file /build_dir/// 3) 连接目标机:target remote : 4)连接成功之后,就可以按正常的gdb调试流程进行调试了。

参考

1) openwrt-remote-debugging 2) GDB User Manual