VSCode C++调试配置全解析
VSCode C/C++调试配置文件 launch.json 全字段解析
launch.json 是 Visual Studio Code 中用于配置调试行为的核心文件。以下是对其字段的详细解析,以 C/C++ 为例。
基础结构
launch.json 必须包含 version 和 configurations 字段:
{
"version": "0.2.0",
"configurations": []
}
核心调试配置字段
name
- 描述:调试会话的名称,显示在调试启动下拉菜单中
- 示例:
"name": "(gdb) Launch"
type
- 描述:调试器类型,C/C++ 常用
cppdbg(Windows/Linux)或lldb(macOS) - 示例:
"type": "cppdbg"
request
- 描述:调试启动方式:
launch:启动新进程attach:附加到已有进程
- 示例:
"request": "launch"
program
- 描述:可执行文件路径(绝对路径或相对于工作区)
- 示例:
"program": "${workspaceFolder}/build/myapp"
路径与参数配置
args
- 描述:传递给程序的命令行参数
- 示例:
"args": ["--input", "data.txt"]
cwd
- 描述:程序的工作目录
- 示例:
"cwd": "${workspaceFolder}/data"
environment
- 描述:环境变量设置
- 示例:
"environment": [
{"name": "PATH", "value": "/usr/local/bin:${env:PATH}"}
]
调试器控制字段
MIMode
- 描述:指定调试器模式(
gdb或lldb) - 示例:
"MIMode": "gdb"
miDebuggerPath
- 描述:调试器绝对路径
- 示例:
"miDebuggerPath": "/usr/bin/gdb"
stopAtEntry
- 描述:是否在程序入口暂停
- 示例:
"stopAtEntry": true
预处理配置
preLaunchTask
- 描述:调试前运行的任务(需在
tasks.json中定义) - 示例:
"preLaunchTask": "build-myapp"
externalConsole
- 描述:是否使用外部终端(Windows 下常用)
- 示例:
"externalConsole": false
高级调试功能
sourceFileMap
- 描述:源代码路径映射(用于远程调试或容器环境)
- 示例:
"sourceFileMap": {
"/mnt/remote": "${workspaceFolder}"
}
setupCommands
- 描述:调试器初始化命令(GDB/LLDB 专用)
- 示例:
"setupCommands": [
{
"description": "Enable pretty-printing",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
多进程调试配置
processId
- 描述:附加调试时指定进程ID(需配合
attach请求) - 示例:
"processId": "${command:pickProcess}"
条件断点配置
logging
- 描述:调试日志输出配置
- 示例:
"logging": {
"trace": true,
"traceResponse": true,
"engineLogging": true
}
典型完整配置示例
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/app",
"args": ["--verbose"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
变量替换参考
VSCode 支持以下预定义变量:
${workspaceFolder}:工作区根目录${file}:当前打开文件${env:VAR}:环境变量值${command:...}:执行VSCode命令
BbS.okane244.info/PoSt/1121_118872.HtM
BbS.okane245.info/PoSt/1121_164403.HtM
BbS.okane246.info/PoSt/1121_032326.HtM
BbS.okane247.info/PoSt/1121_402743.HtM
BbS.okane248.info/PoSt/1121_894820.HtM
BbS.okane249.info/PoSt/1121_625112.HtM
BbS.okane250.info/PoSt/1121_761253.HtM
BbS.okane251.info/PoSt/1121_267073.HtM
BbS.okane252.info/PoSt/1121_324172.HtM
BbS.okane253.info/PoSt/1121_113758.HtM
BbS.okane244.info/PoSt/1121_706146.HtM
BbS.okane245.info/PoSt/1121_281842.HtM
BbS.okane246.info/PoSt/1121_147250.HtM
BbS.okane247.info/PoSt/1121_322186.HtM
BbS.okane248.info/PoSt/1121_606267.HtM
BbS.okane249.info/PoSt/1121_512518.HtM
BbS.okane250.info/PoSt/1121_230615.HtM
BbS.okane251.info/PoSt/1121_266085.HtM
BbS.okane252.info/PoSt/1121_849210.HtM
BbS.okane253.info/PoSt/1121_287210.HtM
BbS.okane244.info/PoSt/1121_230791.HtM
BbS.okane245.info/PoSt/1121_752786.HtM
BbS.okane246.info/PoSt/1121_431603.HtM
BbS.okane247.info/PoSt/1121_294001.HtM
BbS.okane248.info/PoSt/1121_279977.HtM
BbS.okane249.info/PoSt/1121_556012.HtM
BbS.okane250.info/PoSt/1121_292723.HtM
BbS.okane251.info/PoSt/1121_030599.HtM
BbS.okane252.info/PoSt/1121_643034.HtM
BbS.okane253.info/PoSt/1121_276836.HtM
BbS.okane244.info/PoSt/1121_077539.HtM
BbS.okane245.info/PoSt/1121_903649.HtM
BbS.okane246.info/PoSt/1121_636556.HtM
BbS.okane247.info/PoSt/1121_666702.HtM
BbS.okane248.info/PoSt/1121_209678.HtM
BbS.okane249.info/PoSt/1121_164767.HtM
BbS.okane250.info/PoSt/1121_668132.HtM
BbS.okane251.info/PoSt/1121_535064.HtM
BbS.okane252.info/PoSt/1121_414145.HtM
BbS.okane253.info/PoSt/1121_098911.HtM
BbS.okane244.info/PoSt/1121_682769.HtM
BbS.okane245.info/PoSt/1121_872890.HtM
BbS.okane246.info/PoSt/1121_187414.HtM
BbS.okane247.info/PoSt/1121_285919.HtM
BbS.okane248.info/PoSt/1121_933008.HtM
BbS.okane249.info/PoSt/1121_286787.HtM
BbS.okane250.info/PoSt/1121_273649.HtM
BbS.okane251.info/PoSt/1121_317400.HtM
BbS.okane252.info/PoSt/1121_482371.HtM
BbS.okane253.info/PoSt/1121_428473.HtM
BbS.okane244.info/PoSt/1121_222324.HtM
BbS.okane245.info/PoSt/1121_695695.HtM
BbS.okane246.info/PoSt/1121_368299.HtM
BbS.okane247.info/PoSt/1121_154883.HtM
BbS.okane248.info/PoSt/1121_226039.HtM
BbS.okane249.info/PoSt/1121_768656.HtM
BbS.okane250.info/PoSt/1121_835633.HtM
BbS.okane251.info/PoSt/1121_861361.HtM
BbS.okane252.info/PoSt/1121_937326.HtM
BbS.okane253.info/PoSt/1121_640649.HtM
BbS.okane244.info/PoSt/1121_096512.HtM
BbS.okane245.info/PoSt/1121_174932.HtM
BbS.okane246.info/PoSt/1121_490761.HtM
BbS.okane247.info/PoSt/1121_482184.HtM
BbS.okane248.info/PoSt/1121_146564.HtM
BbS.okane249.info/PoSt/1121_030338.HtM
BbS.okane250.info/PoSt/1121_000609.HtM
BbS.okane251.info/PoSt/1121_549911.HtM
BbS.okane252.info/PoSt/1121_335332.HtM
BbS.okane253.info/PoSt/1121_703514.HtM
BbS.okane244.info/PoSt/1121_838091.HtM
BbS.okane245.info/PoSt/1121_935389.HtM
BbS.okane246.info/PoSt/1121_747027.HtM
BbS.okane247.info/PoSt/1121_154842.HtM
BbS.okane248.info/PoSt/1121_091581.HtM
BbS.okane249.info/PoSt/1121_858017.HtM
BbS.okane250.info/PoSt/1121_306601.HtM
BbS.okane251.info/PoSt/1121_110928.HtM
BbS.okane252.info/PoSt/1121_470119.HtM
BbS.okane253.info/PoSt/1121_679984.HtM
查看21道真题和解析