2025-01-09 15:29

VSCode开发C/C++程序编译运行及调试

王姐姐

JavaEE

(47)

(0)

收藏

1. 使用VSCode写C语言代码

1.1. 编写代码

打开文件夹并创建一个c文件,编写代码:

#include <stdio.h>

int main(){
    printf("haha\n");
    return 0;
}

1.2. 设置C/C++的编译环境

为了优化并清晰地描述在Visual Studio Code (VSCode) 中为C/C++源文件配置编译环境的步骤,特别是当鼠标位于.c源文件内部时,你可以按照以下步骤操作:

  1. 打开.c源文件
    确保你已经在VSCode中打开了你的C/C++项目,并且当前焦点位于你想要编译的.c源文件内部。

  2. 使用快捷键打开命令面板
    将鼠标保持在.c源文件内,无需选择任何文本。然后,按下Ctrl+Shift+P快捷键来打开VSCode的命令面板。

  3. 选择配置命令
    在命令面板中,你会看到一个搜索框。在这个搜索框中输入C/C++: Edit Configurations (UI),或者【C/C++:编辑配置(UI)】,然后进入设置页面。然后从下拉列表中选择这个命令。这将打开C/C++扩展的配置页面。

  4. 进入设置页面
    选择C/C++: Edit Configurations (UI)命令后,VSCode会打开一个设置界面,允许你为你的C/C++项目配置编译器和调试器设置。这个界面通常包括多个选项卡,如“IntelliSense”、“编译器路径”、“调试器路径”等。

  5. 配置编译器和调试器
    在设置界面中,你需要指定编译器的路径(例如gcc或g++的路径),以及任何必要的编译选项。如果你已经安装了MinGW-w64,并且它已经被正确地添加到了系统的PATH环境变量中,那么VSCode应该能够自动检测到gcc和g++的路径。如果没有自动检测到,你需要手动指定它们的路径。

  6. 保存配置
    完成配置后,确保点击保存按钮或应用更改,以便VSCode能够保存你的配置并在后续编译和调试时使用它们。

  7. 编译和调试
    现在,你可以使用VSCode的编译和调试功能来构建和运行你的C/C++项目了。通常,你可以通过点击界面上的编译或调试按钮来启动这些功能。

完成配置后,VSCode会在你打开的文件夹(工作区)下自动生成一个.vscode文件夹。这个文件夹非常重要,因为它包含了VSCode用于该项目的各种配置文件,这些配置文件使得你的开发环境得以保存和复用。

.vscode文件夹中,你会看到一个名为c_cpp_properties.json的文件。这个文件是C/C++扩展的核心配置文件之一,它包含了关于C/C++编译和IntelliSense(代码补全、错误检查等功能)的配置属性。

c_cpp_properties.json文件通常包含以下几个主要部分:

  • configurations:这是一个数组,每个元素都是一个配置对象,定义了不同场景(如Debug、Release等)下的编译器和IntelliSense设置。

    • name:配置的名称,用于标识不同的配置场景。

    • includePath:编译器和IntelliSense应该搜索头文件的路径列表。

    • defines:预处理器宏定义列表,这些宏将在编译和IntelliSense过程中被定义。

    • compilerPath:编译器的完整路径,通常是gcc或g++的路径。

    • cStandardcppStandard:分别指定C和C++语言的标准版本。

    • 其他可能的配置选项,如intelliSenseMode(IntelliSense的工作模式)等。

  • version:配置文件的版本信息,通常是由VSCode或C/C++扩展自动管理的。

1.3. 配置任务

要编译代码,在终端中需要先配置任务:

在弹出的页面中,选择【C/C++:gcc.exe 生成活动文件】

这时就生成了一个tasks.json文件,这个文件是专门是用来执行代码的编译任务的。

1.4. 编译

完成了上述的步骤,我们就准备好了所有的准备,接下来就可以编译并生成可执行程序了。

具体操作如下:

  • 鼠标点在要编译的C语言代码中

  • 然后执行【终端】->【运行生成任务】


如果一切正常的话,我们能看到【终端】提示,就说明编译成功了。

这是我们在资源管理器中也能看到生成的.exe文件了。

1.5. 运行

1.6. 新建文件

新建的c文件,直接编译运行即可。不用再次配置了。

1.7. 新建文件夹

新建其他文件夹后,需要把当前项目中的.vscode文件夹拷贝到新文件夹下,否则还需要配置。

1.8. 编译多个源代码文件

在Visual Studio Code (VSCode) 中,为了编译一个项目中的多个源文件,你需要定制tasks.json文件。这个文件定义了VSCode任务,这些任务可以执行编译、构建等自动化操作。

  1. 打开tasks.json文件

    • 在VSCode中,按Ctrl+Shift+B(或Cmd+Shift+B在Mac上)来打开任务运行器,如果还没有配置任务,VSCode会提示你创建tasks.json文件。

    • 你也可以通过命令面板(Ctrl+Shift+PCmd+Shift+P)搜索并选择“Tasks: Configure Task”来创建或编辑tasks.json

  1. 修改tasks.json以编译多个文件

    • tasks.json中,找到或添加一个编译任务。

    • 修改args数组中的编译命令,将"${file}"替换为"${workspaceFolder}\*.c"以编译当前工作区中的所有C文件,或替换为"${workspaceFolder}\*.cpp"以编译所有C++文件。

    • 注意:直接使用通配符(如*.c)可能不适用于所有编译器或构建系统。在某些情况下,你可能需要使用一个构建脚本(如Makefile)来管理多个文件的编译。VSCode支持通过任务调用外部构建脚本。

  1. (可选)指定编译输出的文件名

    • 如果你想要将编译输出的文件名硬编码为特定的名称,比如myProgram.exe,你需要修改编译命令中的输出文件名部分。

    • 通常,这涉及到在编译命令中添加-o选项(对于gcc和g++等编译器)来指定输出文件名。

    • tasks.json中,你可以将输出文件名部分修改为类似"${workspaceFolder}\\myProgram.exe"的形式。但是请注意,这里的路径和文件名应该与你的编译器和构建系统的要求相匹配。

    • 如果你想要使用工作区文件夹的名称作为输出文件名的一部分,你可以使用${workspaceRootFolderName}变量(但请注意,这个变量可能不是所有版本的VSCode都支持;在某些情况下,你可能需要使用${workspaceFolderBasename}作为替代)。

2. 使用VSCode编写C++代码

2.1. 编写C++代码

#include <iostream> // 包含输入输出流库

int main() {
    std::cout << "Hello, World!" << std::endl; // 输出Hello, World!到控制台
    return 0; // 返回0表示程序成功结束
}

2.2. 配置 g++.exe 为编译器

鼠标点在.cpp 的源文件内部,按ctrl+shift+p快捷键,在弹出的界面中选择:【C/C++:编辑配置(UI)】,然后进入设置页面。找到配置名称,这里我们再添加一个C++的配置,点击【添加配置】。

输入:C++作为一个新配置的名,当然也可以用其他名,然后点击【确定】:

编译器路径,选择mingw64的路径下的g++.exe:

这时在c_cpp_properties.json文件中就能看到一个名字叫:C++的配置:

2.3. 生成C++源文件编译的任务信息

.cpp的文件,选择终端下的配置任务:

这时,在tasks.json文件中多了一个g++的编译配置信息:

2.4. 编译C++ 的代码

完成了上述的步骤,我们就准备好了所有的准备,接下来就可以编译并生成可执行程序了。

具体操作如下:

  • 鼠标点在要编译的C++代码中

  • 然后执行【终端】->【运行生成任务】

弹出下面的界面,再选择:【C/C++: g++.exe 生成活动文件】

出现下面结果就说明生成了可执行程序,可以运行了。

3. VSCode的调试

3.1. 创建launch.json文件

首先点击调试,创建launch.json文件:

生成并打开了launch.json文件,点击laucch.json文件的右下方的【添加配置】,选择【C/C++:(gdb)启动】:

生成了调试配置信息如下:

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) 启动",
      "type": "cppdbg",
      "request": "launch",
      "program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "/path/to/gdb",
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "将反汇编风格设置为 Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ]
    }



  ]
}

还需要自定一些信息:

修改"program"为:"D:\\ccode\\cppcode\\demo.exe"。

修改"miDebuggerPath"为:"D:\\mingw64\\bin\\gdb.exe",这个路径根据自己实际放MinGW-w64的文件路径调整。

3.2. 开始调试

一旦launch.json文件配置完成并生成,我们就可以直接在代码中设置断点并开始调试了。调试过程中,VSCode提供的快捷键与VS系列的IDE高度一致,便于用户快速上手。具体来说:

  • 使用F9键可以在当前行设置或取消断点。

  • 按下F5键即可启动调试会话,程序将在设置的断点处暂停执行。

  • F11键用于逐语句调试,即逐行执行代码并观察程序的执行流程。

  • F10键则用于逐过程调试,它会跳过函数内部的详细执行,只关注函数调用的结果。

此外,在调试过程中,我们还可以利用VSCode提供的监视窗口来实时查看变量值、表达式结果以及程序执行过程中的其他关键信息,从而更加深入地了解程序的运行状态和潜在问题。


0条评论

点击登录参与评论