launch.json 配置
{
"version": "2.0.0",
"configurations": [
{
"name": "C/C++: g++.exe 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "C:\\Windows\\system32\\cmd.exe",
"args": ["/C","${fileDirname}\\${fileBasenameNoExtension}.exe","&","pause"],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\A_softwear\\VScode\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "task g++"
},
],
}
这个文件用于配置如何调试你的项目。在你的配置中:
- Name: 提供这个调试配置的名称。
- Type: 指定调试器的类型,这里是
cppdbg
,表示使用的是 C++ 调试器。 - Request: 指定调试会话的类型,这里是
launch
,表示启动一个新的调试会话。 - Program: 指定要调试的程序的路径。
- Args: 程序运行时需要的命令行参数。
- Cwd: 程序的工作目录。
- PipeTransport: 配置通过 Bash on Windows 使用 GDB 进行调试的设置。
- SetupCommands: 包括启用整齐打印和设置反汇编风格等调试器初始化命令。
launch.json
允许你通过配置调试会话的参数,直接从 IDE 启动和调试程序,而不需要离开 VS Code 环境。
如果要使用该代码,需要将miDebuggerPath改成自己的路径。
这里稍微解释一下为啥这样配置,program
被设置为 "C:\\Windows\\system32\\cmd.exe"
,这意味着调试会话启动时,它将启动 Windows 的命令行处理程序(cmd.exe)。这样做的目的通常是为了在命令行环境中执行一系列操作,如运行编译后的 .exe
文件,并通过命令行参数来控制这个执行流程。
关键配置详解:
program
: 指定要启动的程序,这里是cmd.exe
,即命令行窗口。args
: 这是传递给cmd.exe
的参数列表。"/C"
: 告诉cmd.exe
执行后面的字符串然后终止。"${fileDirname}\\${fileBasenameNoExtension}.exe"
: 这是编译后的可执行文件的路径。fileDirname
是文件所在的目录,fileBasenameNoExtension
是文件名(不包括扩展名)。所以这个路径指向你的 C++ 程序的编译输出。"&","pause"
: 这部分让cmd.exe
在执行完.exe
文件后不立即关闭窗口,而是显示“Press any key to continue…”等待用户操作,这样你可以看到程序的输出结果。
调试流程说明:
-
编译: 在调试之前,VS Code 通过执行
preLaunchTask
指定的任务(这里是"task g++"
)来编译你的 C++ 文件。你需要在tasks.json
文件中定义一个名为task g++
的任务,确保它编译当前的 C++ 文件并输出.exe
文件。 -
启动调试会话: 调试会话开始时,VS Code 通过
cmd.exe
打开一个新的命令行窗口,并运行你的.exe
文件。cmd.exe
使用提供的参数执行你的程序,允许你在外部控制台中看到输出,并在程序执行完后暂停。 -
观察结果: 由于
pause
命令的存在,你可以在窗口关闭前看到程序的输出和任何可能的错误信息。
如果你的目的是直接在调试器中运行和调试 C++ 程序,而不通过 cmd.exe
,则 program
应直接指向你的 .exe
文件,而不是 cmd.exe
。确保 tasks.json
正确配置并能生成 .exe
文件,然后在 launch.json
中直接引用该 .exe
文件作为 program
的值。
tasks.json配置
{
"tasks": [
{
"type": "cppbuild",
"label": "task g++",
"command": "D:\\A_softwear\\VScode\\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": "调试器生成的任务。"
},
],
"version": "2.0.0"
}
这个文件主要用于配置如何构建(即编译)你的项目。在你提供的配置中:
- Type: 指定任务的类型,这里是
cppbuild
,表示这是一个 C++ 构建任务。 - Label: 这个任务的标签,方便用户在执行任务时识别。
- Command: 指定编译器的完整路径,这里是
gcc.exe
,这是 MinGW 中的 GCC 编译器。 - Args: 编译器的命令行参数,包括启用诊断颜色、生成调试信息、指定输入文件和输出文件。
- Options: 设置任务执行的工作目录。
- ProblemMatcher: 用于捕捉编译时的错误和警告,使它们在 VS Code 的“问题”面板中显示。
- Group: 表明这个任务属于构建任务,并且是默认的构建任务。
这个文件让你可以通过快捷键(通常是 Ctrl+Shift+B
)或通过命令面板触发编译过程。
如果要直接复制这个代码,需要修改command为自己的路径。如果使用的是gcc编译就改成gcc的地址,如果使用g++,则改成g++的地址。