- (??? ),Hello我是祐言QAQ
- 我的博客主頁:C/C++語言,數據結構,Linux基礎,ARM開發板,網絡編程等領域UP🌍
- 快上🚘,一起學習,讓我們成為一個強大的攻城獅!
- 送給自己和讀者的一句雞湯🤔:集中起來的意志可以擊穿頑石!
- 作者水平很有限,如果發現錯誤,請在評論區指正,感謝🙏
引言
????????在軟件開發過程中,調試是不可或缺的一部分。C/C++ 開發者常常使用 GDB 進行調試,而在 Visual Studio Code中集成 GDB 可以提供一種高效、直觀的調試體驗。本文將為你詳細介紹如何在 VS Code 中配置和使用 GDB 進行 C/C++ 調試,并解答一些常見問題。
一. 安裝 VSCode 插件
????????首先,確保你已經在 VSCode 中安裝了 C/C++ 和 GDB Debug插件,如果沒有安裝,可以在 Extensions 視圖(左側四個方塊)中搜索 "C/C++" 和“GDB Debug” 并分別進行安裝(Install),該插件提供了強大的代碼編輯和調試功能。
二. 配置 GDB
????????在配置 GDB 之前,確保你已經安裝了 GDB 調試器。然后,在 VSCode 中創建一個 launch.json
文件以配置調試環境。或者直接點擊運行調試就會彈出配置該文件的提示。
? ? ? ? 打開后默認長這樣,當然是不行的,所以點擊右下角的Add Configuration...
? ? ? ? 然后選擇你需要的類型:
? ?或者復制如下代碼直接粘貼進去亦可:
{"version": "0.2.0","configurations": [{"name": "C++ Debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/your_executable", //${workspaceFolder}是路徑除執行文件外其他"args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}", //這里也一樣"environment": [], //環境有則需要配置,無則無需管"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build"}]
}
? ? ? ? 但要確保替換 "your_executable"
為你的可執行文件的路徑。這個配置會告訴 VSCode 使用 GDB 進行調試。
三. 基本調試命令
在 VSCode 的調試視圖中
????????你可以使用一系列基本調試命令,如:
- Breakpoints(break): 在源代碼中設置斷點,以便在程序執行到這些地方時停下來;
- Run(F5): 啟動程序;
- Continue(continue): 恢復程序執行,直到下一個斷點;
- Step Into(F11): 逐行進入函數內部;
- Step Over(F10): 逐行執行當前函數,不進入函數內部;
- Step Out(Shift+F11)?: 從當前函數中跳出,繼續執行到函數返回的地方;
- Stop(Shift+F5):?停1止調試;
終端使用命令行方式調試
? ? ? ? 啟動GDB的方式一般為:?gdb <你的可執行文件名>,還有如下的幾種:
1.調試core文件:
//用于調試一個運行程序和core文件,core文件是程序非法執行后core dump產生的文件
gdb <program> core 2.使用GDB “attach”到一個正在運行的服務程序上去,并調試它:
gdb <program> <PID>
或者:
gdb attach <PID>
????????主要的步驟詳細說明一下,其他的自己摸索一下就會了,具體步驟如下:
1.運行(毫無設置的run)
2. 設置斷點(在運行之前設置)
????????設置斷點是調試的關鍵步驟之一。在源代碼中點擊行號旁邊,或者通過命令行使用 break
命令設置斷點(第十行),還可以在指定模塊和函數前設置斷點,禁用斷點和刪除斷點等。
3. 逐行運行
????????這里主要說一下step和next的區別:
-
step
命令: 逐行執行程序,進入函數內部; -
next
命令: 逐過程執行程序,不進入函數內部。
4.backtrace 使用
? ? ? ? 在GDB調試中,有時候會出現報錯Segmentation fault,該報錯是因為出現了內存錯誤,我們就可使用 backtrace 命令來追溯問題出在哪一步,當然這個問題一般出現時就會提示錯誤在哪一行,但我們可以通過該命令來回溯其之前調用的地方逐個檢查問題,方便更快找出。
5. 常見錯誤解決????????
? ? ? ?一般來說,配置好之后點擊“運行和調試”,右上角就會出現該綠色三角,點擊之后報錯讓你修改?launch.json
文件 那么說明你的該文件中存在語法上的錯誤或缺失某行,照著檢查一下即可,一定要注意路徑的/是否加全。
????????在 VSCode 中,GDB 的集成提供了直觀的調試工具。你可以查看變量、觀察寄存器狀態等。通過調試視圖,你可以更輕松地導航和掌握程序執行的每個步驟。
????????除了基本的調試命令外,GDB 還提供了一些高級技巧,如查看內存、觀察程序狀態等。深入了解這些功能可以幫助你更全面地調試代碼。一般來說兩種GDB使用方式配合調試是最好的,它們在不同的地方有各自的亮點和作用。
四、結語????????
????????通過本文的指南,希望將能夠在 VSCode 中配置和使用 GDB 進行 C/C++ 程序的高效調試。調試是編程中的一項重要技能,善用調試工具可以提高代碼質量,加速開發周期。
????????更多C/C++語言、Linux系統、數據結構和ARM板實戰相關文章,關注專欄:
? ?手撕C語言
? ? ? ? ? ? 玩轉linux
????????????????????腳踢數據結構
? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統、網絡編程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?探索C++
??? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? 6818(ARM)開發板實戰
📢寫在最后
- 今天的分享就到這啦~
- 覺得博主寫的還不錯的煩勞?
一鍵三連喔
~ - 🎉🎉🎉感謝關注🎉🎉🎉