在Linux上通常使用gdb命令列除錯,但該方式除錯不太直觀,且命令列長時間不用,容易忘記,不如GUI直觀和容易上手,下面介紹基於GUI的方式除錯Linux。
一.Linux除錯GUI方案簡介
1) Visual studio 遠端除錯Linux
在VS2015版本以後Visual studio就支援Linux的編譯和除錯。使用熟悉的windows介面開發和除錯Linux,極大地提高了開發效率,可以廣泛應用的Linux伺服器開發和嵌入式Linux開發。遺憾的是該方式需要基於VS工程來除錯,舊的專案是基於Makefile的工程,VS不能除錯Makefile工程,業界將Makefile工程轉VS工程,然後用VS來除錯,詳見https://github.com/robotdad/vclinux。
2) 基於eclipse 本地除錯Linux
因為eclipse是跨平臺的,安裝一個帶GUI的linux系統,就可以像VS一樣開發和除錯Linux
3) 基於QtCreator 本地除錯Linux
因為QtCreator是跨平臺的,安裝一個帶GUI的linux系統,就可以像VS一樣開發和除錯
4) 基於eclipse 遠端除錯Linux
gdb+gdbserver方式,遠端有一個gdbserver,本地機器透過網路發指令給gdbserver完成除錯
5) 基於QtCreator遠端除錯Linux
gdb+gdbserver方式,遠端有一個gdbserver,本地機器透過網路發指令給gdbserver完成除錯
6) 基於vscode遠端除錯Linux
該方法支援除錯Linux程式,不要編譯器參與,可以完美的將Makefile工程簡單的接管起來除錯,可以是基於ssh+vscode方式或者gdb+vscode+gdbserver方式。本文重點介紹該ssh+vscode方法的使用。
二.基於vscode ssh遠端除錯Linux實戰
軟體安裝
1) 伺服器安裝gdb
注意我們是ssh+vscode方式,沒有用到gdbserver,故不需要安裝gdbserver。
gdb+gdbserver方式,在宿主機還需要安裝一個交叉編譯的gdb,目標機起一個gdbserver去接收和解析指令,詳見https://blog.csdn.net/zhaoxd200808501/article/details/77838933。
2)VScode 輸入ctrl+shift+x
在擴充套件專欄安裝Remote Development和C/C++,安裝後完畢後產生一個SSH工具和debug工具。
建立ssh連線
這裡以簡單起見,使用密碼賬號登入。當然也可以使用公鑰登入。詳解官方文件
1) 選擇ssh target
3) 選擇連線伺服器,右鍵---connect host in current window,輸入相應密碼即可連線SSH伺服器
配置debug 引數,並進行除錯
即選擇遠端伺服器的debug檔案,指定目錄和原始檔。如C/C++檔案
2) 選擇遠端配置檔案目錄,並建立預設的launch.json檔案
3) 修改配置檔案
1.可執行檔案路徑
"program": "${workspaceFolder}/hello",
2.在main入口斷點住
"stopAtEntry": true,
4) 選擇gdb launch 偵錯程式,就可以啟動遠端的hello可執行檔案,並進行單步,斷點等各種除錯
5) vscode同樣支援attach到某個程序進行線上除錯
1.增加attach 配置
偵錯程式選擇--->add configure---選擇c/c++ gdb attach 即可
2.修改配置檔案中的可執行檔案路徑
"program": " ${workspaceFolder}/hello",
3.在伺服器上啟動一個hello可執行程式
4.選擇gdb attach 偵錯程式,選擇遠端程序為hello的程序,就可以對該程序進行各種手段的除錯