1. 程式人生 > >OpenWRT下的遠端除錯

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除錯流程進行除錯了。