Visual Studio Code 配置C、C++ 文件debug調試環境
大家好我是SLF,在午休的時候給嵌入式軟體的同事,演示了一下如何用vscode調試應用端的CPP程式,他之前一直用的是UltraEdit,同事被vscode的插件調試功能安利了一波,覺得挺好用的。晚上我抽了個時間,整了個文檔,希望也能幫助到大家。
vscode C/C++ Extension Pack 插件安裝
下載直接安裝 C/C++ Extension Pack 它包含了 vscode 編寫 C/C++ 工程需要的插件,和以前比不需要一個個找了。
vscode windows 端 debug 配置
windows 端編譯運行C/C++的程式需要一套集成開發環境,這裡可以使用 MinGW //nuwen.net/mingw.html ,選擇自己需要的安裝包安裝即可,我就直接用推薦的。
window MinGW 環境安裝
-
下載MinGW的安裝包,安裝即可(當然如果電腦上裝著 Visual Studio,也可以用它的工具集配置環境)。
-
配置MinGW的bin目錄到系統環境變數。
-
命令行gcc -v、g++ -v 驗證環境變數是否配置成功
windows 端 C、CPP 單文件 debug 調試
安裝好插件之後,先寫一個簡單的 cpp 文件
#include <iostream>
using namespace std;
int main()
{
int number = 100;
cout << "hello world" << number << endl;
return 0;
}
打個斷點,直接運行debug,可以讓編輯器自己去創建 lanch.json 和 task.json 配置文件
這裡選擇C++(GDB/LLDB)、不要用C++(windows),debug運行的是 windows 自帶的 cmd
下一步 選擇 g++.exe 如下截圖;
記住不要用 C++(WIndows) 選項的話,會調用的是作業系統的cmd運行去運行程式,無法在vscode中正常debug,嘗試了一下,截圖如下。
注意生成的.vscode目錄,其中配置文件 lanch.js 中的 preLaunchTask 值,需要和 tasks.json 中 的任務名稱保持一致。對於不同的作業系統可能的其他環境,可以進行多任務配置。
C文件也可以調試。
我的windows端配置文件如下,大家可以參考。
// launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: //go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\MinGW\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}
// tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "D:\\MinGW\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
程式碼文件中文目錄文件名, 如何在 window 端正常調試
我是直接將 window 作業系統的編碼改成 UTF-8,測試有效,不過之前磁碟中的的一些不是UTF-8編碼的.txt 等文本文件,會有亂碼的情況。win10和win11系統 UTF-8 的配置截圖如下。
-
win10
-
win11
-
重啟電腦後,就可以 debug 中文目錄的單文件了。
vscode ubuntu端 debug配置
我這裡的系統是Ubuntu20.04 版本,類linux系統當中配置vscode debug相對來說比window端要簡單的多。
ubuntu C、CPP單文件調試
創建文件目錄,寫個簡單測試程式,點擊debug 按鈕,可以讓vscode 自己創建 launch.js 和 tasks.json
選擇 C++(GDB/LLDB),參考截圖如下
選擇 gcc – 生成和調試活動文件,參考截圖如下
成功進入斷點。
我的ubuntu端配置文件如下,大家可以參考。
// launch.js
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: //go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和調試活動文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "為 gdb 啟用整齊列印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc 生成活動文件",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
// tasks.js
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc 生成活動文件",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "調試器生成的任務。"
}
],
"version": "2.0.0"
}
中文目錄文件名, 在 ubuntu 端正常調試
在運行,Ubuntu調式中文目錄,中文文件是沒有問題的, locale 看一下當前系統的語言編碼設置,默認是 UTF-8。
如果不行,可以修改默認配置 sudo vi /etc/default/locale,系統語言是中文,LANG=”zh_CN.UTF-8″,系統語言是英文的,LANG=「en_US.UTF-8」
完成修改之後可以, source /etc/default/locale 更新配置。截圖如下
官方文檔參考
vscode官方文檔當中也有相關的配置,大家可以參考。//code.visualstudio.com/docs/cpp/config-mingw