当前位置: 首页 > news >正文

解锁Vscode:C/C++环境配置超详细指南

目录

  • 一、前期准备
  • 二、下载与安装
    • 2.1 下载 VSCode
    • 2.2 下载编译器(以 MinGW - w64 为例)
    • 2.3 安装 C/C++ 插件
  • 三、环境变量配置
    • 3.1 配置 MinGW-w64 环境变量
    • 3.2 验证环境变量配置
  • 四、VSCode 工作区配置
    • 4.1 创建工作区文件夹
    • 4.2 配置 c_cpp_properties.json 文件
    • 4.3 配置 launch.json 文件
    • 4.4 配置 tasks.json 文件
  • 五、测试运行
    • 5.1 编写测试代码
    • 5.2 运行与调试
  • 六、常见问题及解决方法
    • 6.1 无法找到编译器
    • 6.2 编译错误
    • 6.3 调试时闪退


一、前期准备

在进行 C/C++ 编程时,选择一个合适的开发环境至关重要。Visual Studio Code(简称 VSCode)作为一款轻量级且功能强大的代码编辑器,凭借其丰富的插件生态和跨平台特性,深受开发者喜爱。通过配置 VSCode 以支持 C/C++ 开发,我们能够享受到智能代码补全、语法检查、调试等一系列高效开发功能 ,极大地提升编程效率。

在正式配置 VSCode 的 C/C++ 环境之前,需要提前准备好以下软件和工具:

  • Visual Studio Code:可从VSCode 官方网站下载对应操作系统的安装包进行安装 。安装过程中,建议勾选 “Add to Path” 选项,以便在命令行中能够直接调用 VSCode。
  • C/C++ 编译器:常用的编译器有 MinGW、Clang 等。以 MinGW 为例,它是 GNU 工具集在 Windows 平台的移植版本,包含了 GCC 编译器。我们需要下载 MinGW-w64,因为它既支持 32 位也支持 64 位程序的编译,且对 C++ 标准的支持较好。可从MinGW-w64 官网下载安装包,下载时注意选择合适的版本(如 x86_64-posix-seh 代表 64 位系统、seh 异常处理模型),下载完成后解压到合适的目录,比如 “C:\MinGW-w64” ,注意路径中不要包含中文和空格。
  • C/C++ 插件:这是微软官方提供的 VSCode 插件,为 C/C++ 开发提供智能感知、代码导航、调试支持等核心功能,在 VSCode 的扩展商店中搜索 “C/C++” 进行安装即可。
  • Code Runner 插件(可选):如果你希望能够一键运行 C/C++ 代码,方便快速验证代码逻辑,可以安装 Code Runner 插件。安装后,只需点击编辑器右上角的运行按钮,或使用快捷键 “Ctrl + Alt + N”(Windows/Linux)、“Cmd + Option + N”(Mac),即可运行当前激活文件中的代码。

二、下载与安装

2.1 下载 VSCode

VSCode 是一款由微软开发的轻量级代码编辑器,具有跨平台、开源、免费等特点,并且拥有丰富的插件生态系统,能满足各种编程语言的开发需求。对于 C/C++ 开发而言,它提供了强大的代码智能提示、语法检查以及调试等功能,能显著提升开发效率。

你可以通过 VSCode 的官方网站进行下载。打开官网后,在页面中找到对应操作系统的下载按钮,如 Windows、macOS 或 Linux。以 Windows 系统为例,点击 “Download for Windows” 按钮,选择合适的安装包类型(User Installer 或 System Installer,User Installer 针对当前用户安装,System Installer 则对所有用户生效 )进行下载。

下载完成后,运行安装程序,在安装向导中,建议勾选 “Add to Path” 选项,这样安装完成后就能在命令行中直接输入 “code” 来启动 VSCode,方便后续操作;同时,根据个人需求,也可以选择是否将 VSCode 关联到特定文件类型,如文本文件等。

2.2 下载编译器(以 MinGW - w64 为例)

MinGW - w64 是 MinGW 的升级版,它能够生成 32 位和 64 位的可执行程序,并且对 C++ 标准的支持更为全面,因此是在 Windows 系统上进行 C/C++ 开发的常用编译器选择。

你可以从 [MinGW - w64 官网](https://sourceforge.net/projects/mingw - w64/) 下载。进入官网后,在下载页面中,你会看到不同版本和参数组合的下载选项。其中,“Version” 代表 GCC 编译器的版本,通常建议选择最新版本以获取更好的性能和对新特性的支持;“Architecture” 对应系统架构,x86_64 表示 64 位系统,i686 表示 32 位系统,根据自己的系统情况选择;“Threads” 有 posix 和 win32 两种线程模型,win32 适用于 Windows 平台开发,posix 则常用于开发类 Unix 系统应用或需要标准多线程库支持的场景;“Exception” 提供了不同的异常处理模型,SJLJ 兼容性好,适用于 32 位和 64 位系统,但性能相对较弱,SEH 性能较好,仅适用于 64 位系统,DWARF 适用于 32 位系统且性能表现不错 。一般来说,对于 64 位 Windows 系统的常规开发,可选择 x86_64 - posix - seh 的组合进行下载。

下载完成后,得到的是一个压缩包,将其解压到合适的目录,例如 “C:\MinGW - w64”,解压路径中要确保不包含中文和空格,以免后续编译出现问题。

2.3 安装 C/C++ 插件

打开 VSCode,在界面左侧的活动栏中点击扩展图标(看起来像四个方块组成的拼图),打开扩展栏。在扩展栏的搜索框中输入 “C/C++”,在搜索结果中找到由 Microsoft 发布的 “C/C++” 插件,点击 “安装” 按钮进行安装 。安装完成后,建议重启 VSCode,使插件的功能能够完整生效。这个插件为 VSCode 提供了 C/C++ 开发的核心功能,如智能代码补全、语法高亮、代码导航以及调试支持等,是进行 C/C++ 编程必不可少的工具。

三、环境变量配置

3.1 配置 MinGW-w64 环境变量

完成 MinGW - w64 的下载与解压后,为了让系统能够在任何路径下都找到并使用 MinGW - w64 中的编译器(如 gcc、g++)等工具,需要将 MinGW - w64 的 bin 目录路径添加到系统的环境变量中。以 Windows 系统为例,具体操作步骤如下:

  1. 找到桌面上的 “此电脑” 图标,右键点击,在弹出的菜单中选择 “属性” 。
  2. 在弹出的 “系统” 窗口中,点击左侧的 “高级系统设置” 选项。
  3. 在弹出的 “系统属性” 窗口中,选择 “高级” 选项卡,然后点击下方的 “环境变量” 按钮。
  4. 在 “环境变量” 窗口中,分为 “用户变量” 和 “系统变量” 两部分,我们需要在 “系统变量” 中找到名为 “Path” 的变量,选中它并点击 “编辑” 按钮。
  5. 在弹出的 “编辑环境变量” 窗口中,点击 “新建” 按钮,然后将 MinGW - w64 解压目录下的 bin 目录路径粘贴进去。例如,如果 MinGW - w64 解压到了 “C:\MinGW - w64\mingw64” 目录下,那么需要添加的路径就是 “C:\MinGW - w64\mingw64\bin”。添加完成后,点击 “确定” 按钮关闭所有窗口,保存设置。

3.2 验证环境变量配置

环境变量配置完成后,需要验证是否配置成功。通过快捷键 Win + R 打开运行窗口,在窗口中输入 “cmd” 并回车,打开命令提示符。在命令提示符中输入 “gcc -v” 命令(注意 “gcc” 和 “-v” 之间有一个空格),然后回车。如果环境变量配置成功,命令提示符会输出 GCC 编译器的版本信息,包括编译器版本号、版权信息以及支持的编译选项等内容;如果提示 “‘gcc’ 不是内部或外部命令,也不是可运行的程序或批处理文件”,则说明环境变量配置失败,需要检查路径是否添加正确,或者是否存在拼写错误等问题 ,然后重新进行配置。

四、VSCode 工作区配置

4.1 创建工作区文件夹

在本地磁盘上选择一个合适的位置,创建一个专门用于存放 C/C++ 代码的文件夹,比如 “C:\CppProjects” 。这个文件夹将作为你的 VSCode 工作区,用于组织和管理相关的代码文件、配置文件等。

打开 VSCode,点击菜单栏中的 “文件”,选择 “打开文件夹”,在弹出的文件浏览器中找到刚才创建的文件夹,点击 “选择文件夹” 将其打开。此时,VSCode 会将该文件夹识别为工作区,后续的配置和代码操作都将基于这个工作区进行。

4.2 配置 c_cpp_properties.json 文件

在工作区文件夹下,创建一个名为 “.vscode” 的文件夹(注意前面有一个点) 。这个文件夹用于存放 VSCode 工作区相关的配置文件,以确保配置仅对当前工作区生效,不影响其他项目。

在 “.vscode” 文件夹中,创建一个名为 “c_cpp_properties.json” 的文件,该文件用于配置 C/C++ 项目的编译器选项和 IntelliSense(智能感知,提供代码提示、自动完成等功能)环境。以下是一个示例的 “c_cpp_properties.json” 文件内容:

{"version": 4,"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:/MinGW-w64/mingw64/include"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "C:/MinGW-w64/mingw64/bin/gcc.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}]
}

各项配置的含义如下:

  • version:表示 “c_cpp_properties.json” 文件的版本,一般保持默认即可,VSCode 会根据这个版本来解析文件内容 。
  • configurations:是一个数组,里面包含多个配置对象,每个配置对象对应一种编译配置。通常一个项目可能会有针对不同平台(如 Win32、x64)或不同编译选项的配置 ,这里我们先定义一个名为 “Win32” 的配置。
  • name:配置的名称,用于标识不同的配置,方便在 VSCode 中切换不同的编译配置。
  • includePath:指定头文件的搜索路径。“${workspaceFolder}/**” 表示在当前工作区文件夹及其所有子文件夹中搜索头文件 ;“C:/MinGW-w64/mingw64/include” 是 MinGW - w64 编译器的头文件路径,如果项目中使用了编译器提供的标准库头文件,就需要添加这个路径。如果项目中还依赖其他第三方库,也需要将这些库的头文件路径添加到这里。
  • defines:定义预处理宏。这里定义了 “_DEBUG”(用于区分调试版本和发布版本,在调试版本中,编译器可能会生成更多调试信息)、“UNICODE” 和 “_UNICODE”(用于支持宽字符集编程) 。如果项目中有自定义的宏定义,也可以添加到这里。
  • compilerPath:指定编译器的路径。这里填写的是 MinGW - w64 中 gcc 编译器的路径,如果使用的是其他编译器,需要将路径修改为对应的编译器路径 。
  • cStandard和cppStandard:分别指定 C 和 C++ 的语言标准版本。这里设置为 “c11” 和 “c++17”,表示使用 C11 和 C++17 标准进行编译和智能感知 ,你可以根据项目需求选择合适的标准版本。
  • intelliSenseMode:指定 IntelliSense 的模式。这里选择 “gcc - x64”,因为我们使用的是 MinGW - w64(基于 GCC)编译器且是 64 位系统 。如果使用的是其他编译器,如 Clang,应选择相应的模式,如 “clang - x64”。

在实际使用中,如果更换了编译器,或者项目依赖的头文件路径发生变化,就需要相应地修改 “compilerPath” 和 “includePath” 等参数。

4.3 配置 launch.json 文件

在刚才的 “.vscode” 文件夹中,创建一个名为 “launch.json” 的文件,该文件用于配置 VSCode 的调试器,定义如何启动调试会话,指定调试目标、参数等。以下是一个示例的 “launch.json” 文件内容:

{"version": "0.2.0","configurations": [{"name": "C++ Debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"miDebuggerPath": "C:/MinGW-w64/mingw64/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

各项配置的含义如下:

  • version:配置文件的版本号,VSCode 根据这个版本号来解析文件内容 ,保持默认即可。
  • configurations:是一个数组,包含多个调试配置对象,每个对象对应一种调试配置。这里定义了一个名为 “C++ Debug” 的调试配置。
  • name:调试配置的名称,在 VSCode 的调试配置下拉菜单中显示,方便选择不同的调试配置。
  • type:调试器的类型,对于 C/C++ 调试,使用 “cppdbg”,它是 VSCode 中 C/C++ 插件提供的调试功能。
  • request:调试请求类型,“launch” 表示启动一个新的进程进行调试;还有 “attach” 类型,用于附加到已经在运行的进程上进行调试。
  • program:指定要调试的可执行文件路径。“({workspaceFolder}/){fileBasenameNoExtension}.exe” 表示当前工作区文件夹下与源文件同名(去掉扩展名)的可执行文件。例如,如果源文件是 “main.cpp”,则调试的可执行文件为 “main.exe”。如果可执行文件不在工作区文件夹下,或者有其他命名规则,需要修改这个路径。
  • args:传递给要调试程序的命令行参数,这里为空数组,表示不传递额外参数 。如果程序需要接收命令行参数,可将参数添加到这个数组中,如 [“arg1”, “arg2”]。
  • stopAtEntry:设为 “true” 时,程序将在入口处暂停,相当于在 “main” 函数开头设置了断点 ;设为 “false” 时,程序会正常运行,直到遇到手动设置的断点。
  • cwd:调试时的工作目录,“${workspaceFolder}” 表示当前工作区文件夹 。程序运行时的相对路径将基于这个工作目录,如果程序依赖于工作目录下的某些文件或资源,要确保这个路径设置正确。
  • environment:用于设置调试时的环境变量,这里为空数组,表示不额外设置环境变量 。如果程序需要特定的环境变量才能正常运行,可以在这里添加,如 [{“name”: “ENV_VAR_NAME”, “value”: “value”}]。
  • externalConsole:设为 “true” 时,调试时会使用外部控制台(如 Windows 的命令提示符窗口)来显示程序的输出 ;设为 “false” 时,会在 VSCode 的集成终端中显示输出。
  • miDebuggerPath:指定调试器的路径,这里是 MinGW - w64 中 gdb 调试器的路径 。如果使用的是其他调试器,或者调试器路径发生变化,需要修改这个路径。
  • setupCommands:是一个数组,包含在调试会话开始前执行的命令 。这里的命令 “-enable - pretty - printing” 用于开启 gdb 调试器的漂亮打印功能,方便查看复杂数据结构(如 STL 容器)的内容 ,“ignoreFailures” 设为 “true” 表示即使命令执行失败也不影响调试继续进行。

在实际应用中,如果编译器路径发生变化,或者需要传递不同的命令行参数给调试程序,就需要相应地修改 “miDebuggerPath” 和 “args” 等参数。

4.4 配置 tasks.json 文件

继续在 “.vscode” 文件夹中,创建一个名为 “tasks.json” 的文件,该文件用于定义项目中的构建任务,例如编译 C/C++ 源文件。以下是一个示例的 “tasks.json” 文件内容:

{"version": "2.0.0","tasks": [{"label": "Build C++","type": "shell","command": "C:/MinGW-w64/mingw64/bin/g++.exe","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe","-Wall","-std=c++17"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]
}

各项配置的含义如下:

  • version:任务配置文件的版本号,保持默认即可 ,VSCode 根据这个版本号来解析文件内容。
  • tasks:是一个数组,包含多个任务配置对象,每个对象定义了一个具体的任务。这里定义了一个名为 “Build C++” 的编译任务。
  • label:任务的名称,在 VSCode 的任务面板中显示,方便识别和选择不同的任务。
  • type:任务类型,“shell” 表示通过调用系统的 shell(如 Windows 的命令提示符)来执行命令 ;还有 “process” 类型,直接执行外部程序,不通过 shell 解析。这里使用 “shell” 类型,可以方便地使用一些 shell 特性,如路径通配符等。
  • command:执行的命令,这里是 MinGW - w64 中 g++ 编译器的路径 ,用于编译 C++ 源文件。如果使用的是其他编译器,需要将路径修改为对应的编译器路径。
  • args:传递给命令的参数数组:
    • “-g”:表示生成调试信息,方便在调试时查看变量值和执行流程 。
    • “${file}”:这是一个 VSCode 的预定义变量,表示当前打开的文件,即要编译的 C++ 源文件 。
    • “-o”:指定输出文件名,“({fileDirname}/){fileBasenameNoExtension}.exe” 表示将生成的可执行文件输出到与源文件相同的目录下,且文件名与源文件同名(去掉扩展名)加上 “.exe” 后缀 。
    • “-Wall”:开启所有常见的警告信息,帮助发现代码中的潜在问题 。
    • “-std = c++17”:指定使用 C++17 标准进行编译 ,可根据项目需求修改为其他 C++ 标准版本。
  • group:用于将任务进行归类,“kind” 为 “build” 表示这是一个构建任务 ;“isDefault” 设为 “true” 表示这个任务是默认的构建任务,当按下快捷键(如 Ctrl + Shift + B)时,如果没有指定其他任务,就会执行这个默认任务。
  • problemMatcher:用于匹配编译器输出的错误和警告信息,“$gcc” 表示使用 VSCode 内置的 GCC 错误匹配规则 ,它可以将编译器输出的错误信息解析并在 VSCode 的问题面板中以友好的方式显示,方便定位和解决问题。

在实际使用中,如果需要修改编译参数,比如更换 C++ 标准版本、添加更多的编译选项(如优化选项),或者使用不同的编译器,都需要相应地修改 “args” 和 “command” 等参数。

五、测试运行

5.1 编写测试代码

在前面创建的工作区文件夹中,创建一个简单的 C 或 C++ 测试文件,例如 “hello.c”(用于 C 语言)或 “hello.cpp”(用于 C++ 语言)。以经典的 Hello World 程序为例,C 语言代码如下:

#include <stdio.h>int main() {printf("Hello, World!\n");return 0;
}

C++ 语言代码如下:

#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
}

这些代码的作用是在控制台输出 “Hello, World!” 字符串,这是验证 C/C++ 环境是否配置成功的常见方式 。在 C 语言中,通过#include <stdio.h>引入标准输入输出头文件,使用printf函数进行输出;在 C++ 中,通过#include <iostream>引入输入输出流头文件,使用std::cout进行输出,std::endl用于换行并刷新缓冲区。

5.2 运行与调试

保存好测试代码后,点击 VSCode 界面右上角的绿色三角形 “运行” 按钮,或者使用快捷键 “Ctrl + F5”(Windows/Linux)、“Cmd + Option + N”(Mac) 。此时,VSCode 会根据之前配置的 “tasks.json” 文件中的任务,调用相应的编译器(如 g++)对代码进行编译,生成可执行文件,然后运行该可执行文件。在 VSCode 的集成终端中,将会看到输出结果 “Hello, World!”,这表明代码成功运行,C/C++ 环境配置基本正确。

如果需要对代码进行调试,可以在代码中设置断点,例如在printf或std::cout语句的行号左侧点击,会出现一个红点,表示设置了断点 。然后点击 VSCode 左侧活动栏中的调试图标(看起来像一个虫子),打开调试面板,在调试面板的顶部,选择之前配置好的调试配置(如 “C++ Debug”),点击绿色的三角形 “启动调试” 按钮,或者使用快捷键 “F5” 。程序会在设置的断点处暂停执行,此时可以在调试面板中查看变量的值、调用堆栈等信息。

在调试过程中,还可以使用调试工具栏上的其他按钮进行操作,比如 “单步跳过”(快捷键 “F10”),它会按语句单步执行,遇到函数时不会进入函数内部,而是直接执行完整个函数;“单步调试”(快捷键 “F11”),会进入函数内部逐行执行;“单步跳出”(快捷键 “Shift + F11”),当进入函数内部调试后,使用该按钮可以跳出当前函数 。通过这些调试操作,可以深入了解程序的执行流程,方便排查代码中的问题。

六、常见问题及解决方法

在配置 VSCode 的 C/C++ 环境过程中,可能会遇到各种问题,以下是一些常见问题及对应的解决方法。

6.1 无法找到编译器

在 VSCode 中执行编译或调试操作时,提示找不到编译器,比如出现 “‘gcc’ 不是内部或外部命令” 之类的错误信息。

  • 原因分析
    • 编译器未正确安装,例如在安装 MinGW - w64 时,解压过程出现错误,导致文件缺失。
    • 环境变量配置错误,未将编译器的 bin 目录路径添加到系统环境变量中,或者添加的路径有误,如路径中存在多余的空格、引号等。
    • VSCode 的配置文件(如 c_cpp_properties.json、tasks.json)中编译器路径设置错误 ,可能是路径与实际安装路径不一致,或者使用了错误的变量引用。
  • 解决思路和方法
    • 重新检查编译器的安装过程,确保安装包完整下载且解压到正确的目录。以 MinGW - w64 为例,可以重新从官网下载安装包,解压到没有中文和空格的目录,如 “C:\MinGW - w64” ,解压完成后,检查解压目录下是否包含 bin、include、lib 等必要文件夹。
    • 再次确认环境变量的配置。打开系统的环境变量设置窗口,检查 “Path” 变量中是否包含编译器的 bin 目录路径。如对于 MinGW - w64,应确保 “C:\MinGW - w64\mingw64\bin” 已正确添加到 “Path” 变量中,并且路径没有拼写错误、多余字符。可以通过在命令提示符中输入 “gcc -v” 来验证环境变量是否配置成功,如果能正确输出版本信息,则说明环境变量配置正确;若提示错误,可重新编辑 “Path” 变量,或者删除错误的路径后重新添加。
    • 检查 VSCode 配置文件中的编译器路径设置。在 c_cpp_properties.json 文件中,确认 “compilerPath” 字段设置为正确的编译器路径,如 “C:/MinGW - w64/mingw64/bin/gcc.exe” (注意路径分隔符在 JSON 文件中需使用正斜杠);在 tasks.json 文件中,检查 “command” 字段是否指向正确的编译器,如 “C:/MinGW - w64/mingw64/bin/g++.exe” ,如果路径有误,进行相应修改。修改完成后,保存配置文件,重新在 VSCode 中执行编译或调试操作。

6.2 编译错误

编写好 C/C++ 代码后,进行编译时出现各种编译错误,如语法错误、头文件找不到等。

  • 原因分析
    • 代码中存在语法错误,这是最常见的原因,例如变量未定义、函数调用参数不匹配、缺少分号等。
    • 头文件包含问题,可能是头文件路径设置错误,导致编译器找不到所需的头文件;或者在代码中使用了不存在的头文件 。
    • 编译选项设置不合理,例如在 tasks.json 文件中设置的编译参数与代码或编译器不兼容,如指定了过高的 C++ 标准版本,而编译器不支持该版本。
  • 解决思路和方法
    • 仔细检查代码,利用 VSCode 的语法高亮和智能提示功能,找出并修正语法错误。对于复杂的语法错误,可以逐行检查代码逻辑,或者参考相关的 C/C++ 语法文档。
    • 检查头文件路径设置。在 c_cpp_properties.json 文件中,确认 “includePath” 数组中包含了正确的头文件路径。如果项目使用了自定义的头文件,需要将头文件所在的目录路径添加到 “includePath” 中;如果使用的是编译器自带的标准库头文件,确保 MinGW - w64 的 include 目录路径(如 “C:/MinGW - w64/mingw64/include”)已正确添加。同时,检查代码中头文件的包含语句是否正确,如#include (尖括号用于包含标准库头文件)、#include “myheader.h”(双引号用于包含自定义头文件)。
    • 调整编译选项。根据代码和编译器的实际情况,修改 tasks.json 文件中的编译参数。如果使用的是较新的 C++ 特性,确保编译器支持该特性,并在 “args” 数组中指定正确的 C++ 标准版本,如 “-std = c++17” 。如果编译过程中出现其他与编译选项相关的错误,可以查阅 GCC 编译器的官方文档,了解各个编译选项的含义和用法,进行相应调整。

6.3 调试时闪退

在调试 C/C++ 程序时,程序窗口一闪而过,无法查看调试信息。

  • 原因分析
    • 程序执行完毕后,控制台窗口会自动关闭,这是正常的系统行为。如果程序没有设置断点,或者在调试配置中没有阻止控制台窗口关闭的设置,就会出现闪退现象。
    • 调试配置错误,例如 launch.json 文件中 “externalConsole” 设置为 “false”,导致调试输出在 VSCode 集成终端中,而集成终端在程序结束后会自动关闭;或者 “program” 字段指定的可执行文件路径错误,导致调试器无法正确启动程序。
  • 解决思路和方法
    • 在程序中添加暂停语句,如在 C 语言中可以添加system(“pause”);(需要包含头文件#include <stdlib.h>),在 C++ 中也可以使用system(“pause”);(同样需包含#include <stdlib.h>),这样程序执行到该语句时会暂停,等待用户按下任意键后才关闭控制台窗口 。但这种方法在使用一些在线评测系统或特定环境时可能不适用。
    • 修改调试配置。在 launch.json 文件中,将 “externalConsole” 设置为 “true”,这样调试时会使用外部控制台窗口,程序执行完毕后,外部控制台窗口不会自动关闭;同时,确保 “program” 字段指定的可执行文件路径正确,如 “({workspaceFolder}/){fileBasenameNoExtension}.exe” 。如果还是出现闪退问题,可以在调试配置中添加 “preLaunchTask” 字段,指定在启动调试前执行编译任务,确保生成最新的可执行文件 ,例如:
{"version": "0.2.0","configurations": [{"name": "C++ Debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"miDebuggerPath": "C:/MinGW-w64/mingw64/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "Build C++" // 这里的“Build C++”需与tasks.json中任务的label一致}]
}
http://www.xdnf.cn/news/948151.html

相关文章:

  • Python训练营---DAY49
  • 卷积神经网络设计指南:从理论到实践的经验总结
  • FDMA:解锁PL DDR性能的“高速快递系统”
  • Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
  • 论文笔记:Urban Computing in the Era of Large Language Models
  • 多模态大语言模型arxiv论文略读(113)
  • Vue3+ts项目,在ts文件中导入vue文件,报错:找不到模块“./App.vue“或响应的类型声明
  • Easy Rules规则引擎:轻量级Java规则处理实践指南
  • 微机原理与接口技术,期末冲刺复习资料(四)
  • Python_day49cbam模块介绍
  • 华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
  • 从线上名片到商业引擎:企业如何用官网重构市场竞争力?
  • 从数据报表到决策大脑:AI重构电商决策链条
  • 客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
  • 篇章十 数据结构——排序
  • 用HTML5+CSS3+JavaScript实现找不同游戏
  • c语言tips-结构体数组 VS 链表宏:`list_for_each_entry` 的优势与局限对比分析
  • 《解锁JNA与CUDA内核密码,定制专属AI算子》
  • SDC命令详解:使用set_wire_load_model命令进行约束
  • 二分查找算法
  • WEB3全栈开发——面试专业技能点P6后端框架 / 微服务设计
  • 可下载旧版app屏蔽更新的app市场
  • 判断是否是润年
  • 【投稿优惠】2025年航天技术 、雷达信号与无人机应用国际会议 (ATRA 2025)
  • Fail2ban开源入侵检测,保护SSH,NGINX等
  • 2025盘古石杯决赛【手机取证】
  • 手机平板能效生态设计指令EU 2023/1670标准解读
  • SQL Server 触发器调用存储过程实现发送 HTTP 请求
  • AI 导游:开启智能旅游新时代
  • CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝