gdbserver 遠端除錯教學

本篇 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
2
gdb 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 按讚支持一下!

相關主題
gdb 除錯教學
LLDB 除錯教學