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

【基础】Windows 中通过 VSCode 使用 GCC 编译调试 C++

在这里插入图片描述

准备

  1. 安装 VSCode 及 C++ 插件。
  2. 通过 MSYS2 安装 MinGW-w64 工具链,为您提供必要的工具来编译代码、调试代码并配置它以使用IntelliSense。参考:Windows 中的 Linux 开发工具链

验证安装:

gcc --version
g++ --version
gdb --version

三个核心配置文件

  • tasks.json: 用于设置编译指令
  • launch.json: 用设置调试指令
  • c_cpp_properties.json 编译器及: IntelliSense 设置

tasks.json 编译调试单个文件

VSCode 检测到 C++ 文件,第一次运行程序时, C++ 插件根据选择的编译器创建一个 task.json 文件,您可以在项目 .vscode 文件夹中找到。

"type": "cppbuild",
"label": "编译C++文件",
"command": "D:\\program\\msys64\\ucrt64\\bin\\g++.exe",
"args": [
    "-fdiagnostics-color=always",
    "-g",
    "${file}",
    "-o",
    "${fileDirname}\\${fileBasenameNoExtension}.exe"
],

该任务指示 g++ 获取当前活动文件(${file}),对其进行编译,并在当前文件所在目录(${fileDirname})中生成一个输出文件(通过 -o 选项)。输出文件的名称与当前活动文件的主文件名相同,仅扩展名改为 .exe ${fileBasenameNoExtension}.exe)。该操作将生成 <file_name>.exe

通过 launch.json 定制调试行为

默认情况下会自动生成调试配置。在某些情况下,你可能希望自定义调试配置,例如指定要在运行时传递给程序的参数,这通过 launch.json 文件来实现。
可通过在运行和调试界面添加配置实现,选择c++(gdb)启动,会自动生成 launch.json 文件。

{
  "configurations": [
    {
      "name": "编译并调试c++文件", // 任务名称
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
      "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++文件" // 前置任务
    }
  ],
  "version": "2.0.0"
}

三、更多设置 c_cpp_properties.json

如果您希望对C/C++扩展有更多的控制,您可以创建一个c_cpp_properties.json文件,它将允许您更改设置,例如编译器的路径,包括路径,c++标准(默认是c++ 17)等。Ctrl+Shift+P 在命令面板中输入“C/C++: Edit Configurations(UI)”,可以查看C/C++配置界面。

{
  "configurations": [
    {
      "name": "GCC",
      "includePath": ["${workspaceFolder}/**"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "windowsSdkVersion": "10.0.22000.0",
      // 推断c++标准库头文件的路径。当扩展知道在哪里可以找到这些文件时,它可以提供智能补全和Go to Definition导航等功能。
      "compilerPath": "D:/program/msys64/ucrt64/bin/g++.exe", 
      "cStandard": "c17",
      "cppStandard": "c++20",
      "intelliSenseMode": "windows-gcc-x64"
    }
  ],
  "version": 4
}

插件

可以通过安装 C/C++ Runner 插件,自动生成配置文件,并可视化操作(如切换编译路径、通过点击按钮编译、运行、调试)

相关文章:

  • 【QA】为什么gl_Posision必须被赋值?
  • 人工智能笔记
  • 开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(四)
  • 【QA】OpenGL的渲染流程是怎么样的?
  • 提升TikTok直播流量的有效方法分析
  • struts2漏洞攻略
  • python多线程和多进程的区别有哪些
  • 蓝桥杯,利用 Vue.js 构建简易任务管理器
  • 3.17-3.23 Web3 游戏周报:Pixudi 双榜领跑,The Forgotten Runiverse 登陆三大主机平台
  • 【MYSQL】聚合查询、分组查询、联合查询
  • 《软件安装与使用教程》— NVIDIA CUDA在Windows的安装教程
  • IDEA工具使用之启动项目失败且无日志打印
  • 如何创建一个socket服务器?
  • 【C#语言】深入理解C#多线程编程:从基础到高性能实践
  • AI 时代,我们需要什么样的数据库?
  • Linux split 命令实现日志文件的拆分
  • 自由学习记录(48)
  • MATLAB 批量移动 TIF 文件至分类文件夹
  • C++对C的拓展-3.22笔记
  • 深入解析C++面向对象三大特性:封装、继承与多态v
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 中国科学院院士张泽民已任重庆医科大学校长
  • 荆州市委书记汪元程:全市各级干部要做到慎微、慎初、慎独、慎友
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • 王沪宁主持召开全国政协主席会议
  • 神舟十九号载人飞船因东风着陆场气象原因推迟返回