vscode配置c++环境

第一步:安装vscode编辑器

预先安装:

  1. vscode(https://code.visualstudio.com/)
  2. 在vscode中安装 C/C++ extension for VS Code(在左侧扩展栏中搜索 “C++”)

第二步:安装MinGW-w64工具链

MinGW 提供最新的GCC本地builds、MinGW-w64、其他C++工具和库。也可在 msys的github 处直接下载。

MSYS2需要在 Windows8.1及以上的操作系统运行。

其他注意事项请看:vscode官网

安装完成后,将 MinGW-w64 的 bin 文件夹路径(D:\CodingTools\CandCpp\MinGW64\bin)添加到Windows的 PATH 环境变量中。

最后在 cmd 中输入以下内容,如果有输出信息,表示安装成功。

gcc --version
g++ --version
gdb --version
  1. 请认准核对添加的path变量与 bin 目录的位置是否一致。
  2. gcc 有输出但 gdb 没有,需要从 MinGW-w64 toolset 中安装丢失的包。如编译过程中提示:“The value of miDebuggerPath is invalid.”说明丢失了mingw-w64-gdb package

第三步:建立helloworld.cpp

通过 cmd 进入某一个文件夹下,此目录存放源文件目录。在 cmd 输入:

# 在当前目录下打开vscode
code . 

如果有提示,选中 “Yes, I trust the authors”(只要是自己创建的文件夹)

后续在vscode的当前文件夹下,看到一个文件夹 .vscode,包含以下三个文件:

  • tasks.json:build 指令
  • launch.json:debug 设置
  • c_cpp_properties.json:编译器路径和智能提示设置

添加源文件

vscode配置c++环境_第1张图片

ps:关于 vscode 编辑器的一些接口和布局;另外可以通过 tab 键选择智能提示的某些成员。

运行cpp后缀文件

  1. 打开helloworld.cpp使得该文件是 active file

  2. 点击右上角:Run C/C++ File

    vscode配置c++环境_第2张图片

  3. 从检测到的系统中的编译器中,选择:C/C++: g++.exe build and debug active file (只会在第一次编译运行此cpp文件时选择编译器)(cpp和g++的区别?)

    vscode配置c++环境_第3张图片

  4. 终端显示有以下信息,运行成功

    image-20230724155558595

关于tasks.json

第一次运行程序,c++扩展会在.vscode文件夹下创建一个task.json文件(其实该文件是保存在关于 build 的配置中,?)

下面是一个例子:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",   // 此值会在任务列表中看到(tasks list ?),可以取任意值
            "command": "D:\\CodingTools\\CandCpp\\MinGW64\\bin\\g++.exe",
            // 1. command:明确要运行的程序是使用g++编译器
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            /*
            args数组:传递给g++的命令行参数
            第一个参数-fdiagnostics-color=always:对诊断信息使用颜色(一直),具体看gcc manuals
            -g:生成调式信息({file}:当前在vscode中打开的文件)
            -o:生成目标文件(win是exe后缀)
            ${fileDirname}:{file}所在的文件夹
            ${fileBasenameNoExtension}:{file},不包括后缀
            */
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."  // 任务列表中的任务的详细描述,推荐重命名这个值,从而区分相似任务
        }
    ],
    "version": "2.0.0"
}

关于task.json中变量的含义:https://code.visualstudio.com/docs/editor/variables-reference

play按钮会从task.json读取信息,从而知道如何编译运行程序。可以在task文件中定义多个编译任务,无论哪个任务被标记为默认任务,都会使用play按钮。

如果需要更改更改默认编译器,在命令版(Command Palette)中运行 Tasks: Configure Default Build Task (?)。或者可以更改task.json文件,移除默认配置,并且用:

    "group": "build",

替换默认配置中的下列部分:

    "group": {
        "kind": "build",
        "isDefault": true
    },

编译多cpp文件

使用参数"${workspaceFolder}/*.cpp" 代替 ${file}

也可以更改输出文件的名称:使用硬编码方式的文件名"${fileDirname}\\${fileBasenameNoExtension}.exe" 替换为"${workspaceFolder}\\myProgram.exe"

Debug helloworld.cpp

  1. 返回helloworld.cpp使其成为一个活跃文件

  2. 在鼠标某一行左侧边缘,或者在当前行按 F9 设置断点

  3. 右上角的下拉按钮中点击 Debug C/C++ File

    vscode配置c++环境_第4张图片

    编辑器在对断点debug前,会高亮断点行;鼠标选中debug控制器左侧的原点,可拖动debug控制器的位置。

debug

1. 单步调试

1、设置好断点后,点击debug。点击debug控制器的第二个选项:Step Over(F10),结果如下图。此时会执行for循环中的第一行,跳过关于vector、string等需要被调用的类的内部函数,此时看左侧msg变量被创建和初始化。

vscode配置c++环境_第5张图片

2、再次按下Step Over(F10)

vscode配置c++环境_第6张图片

3、可以继续按下Step Over知道循环结束(C++ extension 2019.3 以后的版本,不会输出任何信息到Debug Console直到循环退出)。如果希望更深入地debug源代码中关于C++ standard library,可以按下Step Into(F11)

vscode配置c++环境_第7张图片

返回helloword.cpp源代码:

  • 一直Step Over
  • 在for循环内部的cout附近插入断点,再按F5(Continue),就重新回到了for循环的cout语句。(此时如果按一次F5,terminal会显示一个vector中的单词)

4、debug结束后,终端会显示输出,也包含由GDB输出的诊断信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2QxAw1FI-1690797412575)(C:\Users\w\AppData\Roaming\Typora\typora-user-images\image-20230728212854134.png)]

2. 设置监视器(set a watch)

如果在debug时想观察一个变量的值,可以设置一个watch(监视)

  1. 现在循环中插入断点。点击左侧watch栏的加号,输入“word”(即循环变量的名称)。现在可以观察word中的值。

    vscode配置c++环境_第8张图片
  2. 增加另一个watch:在循环前增加此语句:int i = 0; 然后在循环中增加语句: i++; 在watch栏增加对变量i的watch。

    vscode配置c++环境_第9张图片
  3. 在debug过程中,如果想快速查看任何变量的值,可以将鼠标指针悬停在该变量上。

    vscode配置c++环境_第10张图片

通过修改launch.json进行自定义debug

用play按钮或者F5debug时,C++扩展会动态创建debug配置。有时需要自定义debug配置(比如,需要在运行时指定一些参数传递给程序),可以在launch.json文件中自定义debug配置信息。

vscode配置c++环境_第11张图片

选择第一个,创建一个launch.json文件。然后在下拉列表中选择GDB。

vscode配置c++环境_第12张图片

然后点击右下角的Add configuration:

vscode配置c++环境_第13张图片

以上几步的过程和vscode官方文档的教程不太一样,没有选取g++编译器的debug的过程。

最后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": "enter program name, for example ${workspaceFolder}/a.exe", // 想要debug的程序
            // 官方文档的设置为:"${fileDirname}\\${fileBasenameNoExtension}.exe", 即活跃文件夹下后缀为exe的活跃文件
            "args": [],  // 此属性是要传递给程序的参数数组
            "stopAtEntry": false, // 默认情况下C++扩展不会增加任何断点在程序中,stopAtEntry为false
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            // gdb.exe的位置,如"C:\\msys64\\mingw64\\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
                }
            ]
        }
    ]
}   

配置好launch.json后,当需要对程序debug,play按钮和f5会读取此文件信息。


其他关于C/C++的设置

如果想要更多关于 C/C++扩展的控制,可以创建一个文件: c_cpp_properties.json。在此文件中可以修改一些设置,如编译器路径、include路径、C++标准(默认是C++17)以及其他。步骤:

  1. Ctrl+Shift+P 打开命令版,输入“C/C++”,选中C/C++: Edit Configurations (UI)。这将会打开 C/C++配置页面,如果对此页面有任何改动,VS Code会将改动写入 .vscode文件夹下的 c_cpp_properties.json文件中。

    vscode配置c++环境_第14张图片

  2. 查看配置文件页面和json文件内容:

    vscode配置c++环境_第15张图片

    vscode配置c++环境_第16张图片

    includePath:程序包含的头文件不在你的工作区或标准库路径,添加其路径到此数组中。

    compilerPath:C++标准库头文件路径。关于此参数的查找顺序:

    1. 首先查找MSVC编译器;
    2. 查找windows中是否存在子系统linux的g++;
    3. MinGW-w64 的g++;

    如果已经安装过WSL(Windows Subsystem for Linux,第2步)或 Visual Studio ,则需要修改 compilerPath 参数。


参考来源:

  1. VS Code官方文档

你可能感兴趣的:(#,VS,Code,vscode,c++,ide)