OpenWRT下的遠端除錯
OpenWRT下遠端除錯
一、建立除錯環境
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 <local_IP>:<port> <program> <args>
2. 啟動宿主機gdb
(這裡要修復一個bug,方法是:cd <openwrtdir>/staging_dir/<targetarch>; rmdir lib; ln -s ../toolchain-<targetarch>_<gccver>/lib lib)。
cd <openwrtdir>/build_dir/toolchain-<targetarch>_<gccver>/gdb-6.3/gdb
./gdb -- 啟動
3. 設定gdb,並啟動除錯程式
1) set solib-absolute-prefix <openwrtdir>/staging_dir/<targetarch>
2) file <openwrtdir>/build_dir/<targetarch>/<path>/<executable>
3) 連線目標機:target remote <ip>:<port>
4)連線成功之後,就可以按正常的gdb除錯流程進行除錯了。