VScode编译C++配置
VScode如果配置好了编译器,比如g++(windows就是mingw64或者mscv)
只需要配置好launch.json
和task.json
文件即可。
launch.json
是调用配置好的带调试信息的exe文件进行debug,task.json
一般是编译生成exe文件的步骤。
launch.json
文件
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}
- 其中
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
表示可执行的调试文件。 "preLaunchTask": "C/C++: g++.exe build active file"
表示生成可执行的main.exe
的任务,这个指令其中的名字匹配的是下面的task.json
文件中的label
,就是C/C++: g++.exe build active file
,他主要的作用就是执行编译生成可调试文件的命令g++ -g .\main.cpp -o main.exe
task.json
{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe build active file","command": "C:\\Program Files\\x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0\\mingw64\\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"
}
如果使用cmake或者g++自己编译了多个文件,这个办法就不可以使用,这个只能编译单个文件,这时候如果修改launch.json
文件中的"program",然后注释掉"preLaunchTask": "C/C++: g++.exe build active file"就可以用自己的命令生成的exe文件继续调试了。
但是由于这样是用F5不会重新编译文件,所以最后无法使用费F5及时的随时调试新的文件。
如果想配置的话有两种方法:
- 使用g++进行编译
- 是用cmake进行编译
launch.json
中各标签解释
name
代表这个tasks.json中这个任务的名字request
代表调试模式,有launch和attach两种,后者适用于不停止的程序program
代表这个可执行文件args
代表这个可执行文件执行时可以选择的参数cwd
代表这个可执行文件当前的目录下miDebuggerPath
代表调试器的路径,这里用的是gdb