VsCode 配置C++調試運行
- 打開命令面板快捷鍵為F1,軟件上寫的Ctrl+Shift+P似乎沒用
先安裝插件使得可以運行
- 先自行在vsc擴展中搜索C++安裝
C/C++
插件 - 再參考知乎專欄中安裝code-runner插件使得可以運行,參考這位知乎博客的插件參數配置,代碼使用同樣是這個人的知乎回答,他的知乎回答中的代碼加上了必備的參數(注意.c和.cpp文件無法使用同一個配置)
一些編譯參數比如說,添加編譯警告,使得可以支持C++14等等,在這一步中進行,具體操作這位知乎博主有說
配置斷點調試環境
-
參考這位CSDN博主配置存放代碼文件夾下的
.vscode
中的launch.json
和tasks.json
-
需要注意的是,在VSC中調試需要在打開的文件夾中進行(注意!是用VSC打開文件夾!!,單獨打開一個單獨的cpp是沒有下面的幾個配置文件出現的!!也就是說,這個cpp要在一個文件夾里!不像DevCpp和C-Free可以直接調試一個單獨的cpp!!)
-
VSC不支持路徑中含中文的文件調試
-
條件斷點的使用
-
特別注意:
-
Vsc打開其他文件時,中文顯示亂碼,一勞永逸解決方案:打開Vsc,文件-首選項-設置-搜素
files.autoGuessEncoding": flase
改為files.autoGuessEncoding": true
-
Vsc終端打印出現中文亂碼,首先我們應該明白,Vsc的終端調用的是windows的cmd或者windows powershell,到底是哪個可以通過
先新建一個終端,保證有兩個終端以上的時候就可以看到選擇默認的shell
這個選項,里面可以選擇是調用cmd還是powershell,通過chcp
命令可以查到這兩個終端的默認編碼都是936(簡體中文默認的GBK編碼),可以通過命令chcp 65001
(65001 UTF-8代碼頁)臨時將編碼改成UTF-8。不建議直接修改cmd和powershell的默認編碼,這會導致國內有些使用GBK編碼的軟件出現亂碼或者不能顯示或者莫名其妙的Bug,比如有道詞典。詳情查看知乎馬甲回答下的評論,等一些老軟件全部更新成現代Unicoded軟件的時候就可以更改windows的編碼了,具體方法網上很多,這里不再累贅。 -
最后配上一份我本地的配置代碼
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名稱,將會在啟動配置的下拉菜單中顯示
"type": "cppdbg", // 配置類型,這里只能為cppdbg
"request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加)
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 將要進行調試的程序的路徑
"args": [], // 程序調試時傳遞給程序的命令行參數,一般設為空即可
"stopAtEntry": false, // 設為true時程序將暫停在程序入口處,一般設置為false
"cwd": "${workspaceFolder}", // 調試程序時的工作目錄,一般為${workspaceFolder}即代碼所在目錄
"environment": [],
"externalConsole": true, // 調試時是否顯示控制台窗口,一般設置為true顯示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:/MinGW/bin/gdb.exe", // miDebugger的路徑,注意這里要與MinGw的路徑對應
"preLaunchTask": "g++", // 調試會話開始前執行的任務,一般為編譯程序,c++為g++, c為gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
// {
// // 有關 tasks.json 格式的文檔,請參見
// // https://go.microsoft.com/fwlink/?LinkId=733558
// "version": "2.0.0",
// "tasks": [
// {
// "type": "shell",
// "label": "g++",
// "command": "C:\\MinGW\\bin\\g++.exe",
// "args": [
// "-g",
// "${file}",
// "-o",
// "${fileDirname}\\${fileBasenameNoExtension}.exe"
// ],
// "options": {
// "cwd": "C:\\MinGW\\bin"
// },
// "problemMatcher": [
// "$gcc"
// ],
// "group": {
// "kind": "build",
// "isDefault": true
// }
// }
// ],
// }
{
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 編譯命令參數
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
- 本地用戶設置代碼
settings.json
{
"files.autoSaveDelay": 500,
"editor.fontSize": 18,
"code-runner.clearPreviousOutput": true,
"code-runner.ignoreSelection": true,
"code-runner.preserveFocus": false,
"code-runner.runInTerminal": true,
"code-runner.respectShebang": false,
"code-runner.saveAllFilesBeforeRun": true,
"code-runner.saveFileBeforeRun": true,
"code-runner.executorMap": {
"c": "cd $dirWithoutTrailingSlash && gcc $fileName -o $fileNameWithoutExt.exe -std=c11 -Wall -lm && ./$fileNameWithoutExt.exe",
//"c": "cd $dir && gcc -std=c11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
//"cpp": "cd $dir && g++ -std=c++1s4 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dirWithoutTrailingSlash && g++ $fileName -o $fileNameWithoutExt.exe -std=c++11 -Wall -lm && ./$fileNameWithoutExt.exe",
//"c": "cd $dir && gcc -std=c11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
"files.autoSave": "afterDelay",
"files.autoGuessEncoding": true,
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
}