本篇 ShengYu 介紹使用 gdbserver 來遠端除錯教學,gdb 可以透過網路對遠端的程式進行除錯,需要遠端執行 gdbserver 以及搭配本地端 gdb 一起使用,而 gdbserver 是 server 的角色,而 gdb 是 client 的角色,一旦 gdb 連上遠端的 gdbserver 後,之後就使用 gdb 進行除錯,跟平常的 gdb 使用上沒有差異,我的桌機環境為 Ubuntu 16.04,
Remote 端
在 Remote 端執行 gdbserver,執行 gdbserver 後面參數加上 <ip:port>
監聽的ip位址與port通訊埠以及要偵錯的執行檔路徑,這邊範例使用 port 20000,1
gdbserver 192.168.0.2:20000 samplehello
gdbserver 要使用 attach 的方式的話,後面接上程式的 pid 即可,1
gdbserver 192.168.0.2:20000 --attach <pid>
Local 端
在 Local 端執行 gdb,後面參數接上執行檔(debug 版本,no striped),執行 gdb 後使用 target remote <ip:port>
來連上遠端的 gdbserver,這邊範例是連上本地端的 port 20000,這樣 Remote 的 gdbserver 就收到連線請求,1
2gdb samplehello
(gdb) target remote 192.168.0.2:20000
一般 gdb 除錯時是使用 r 開始執行程式。不過遠端除錯時,遠端的 gdbserver 已經 run 了,所以 gdb 要用 c 來繼續執行,不能用 r。
以下為 gdb 常用的指令,r
:run 開始執行c
:continue 繼續執行b main.cpp:14
:設定中斷點info b
:印出目前設定的中斷點bt
:backtrace 印出程式呼叫的堆疊q
:quit 離開
以上就是 gdbserver 遠端除錯教學介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!