【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

07-21 1636阅读

【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

  • 1. 安装C/C++编译器
    • 1.1 官方链接,[MSYS2 C/C++编译器](https://www.msys2.org/)
    • 1.2 下载MSYS2编译器
    • 1.3 安装依赖环境
    • 1.4 更新包数据库
    • 1.5 安装 GCC 编译器
    • 1.6 安装 Make 工具
    • 1.7 安装cmake工具
    • 1.8 或者一键安装依赖环境
    • 1.9 配置环境变量
    • 1.10 验证环境变量配置
    • 2.创建工程项目
      • 2.1 创建一个main.c代码文件
      • 2.2 通过Code打开。
      • 3.安装插件
        • 3.1 点击扩展Extensions图标
        • 3.2 输入搜索`C/C++ Extension Pack`
        • 4. 配置文件
          • 4.1 c_cpp_properties.json
          • 4.2 launch.json
          • 4.3 tasks.json
          • 4.4 settings.json
          • 5. Debug
            • 5.1 调试代码
            • 5.2 代码调试快捷键
              • F5 - 继续/开始调试
              • F10 - 逐行执行(不进入函数内部)
              • F11 - 逐行执行(进入函数内部)
              • Shift+F11 - 跳出当前函数
              • 6. Run
              • 7. 可能遇到的问题

                1. 安装C/C++编译器

                1.1 官方链接,MSYS2 C/C++编译器

                https://www.msys2.org/
                

                1.2 下载MSYS2编译器

                点击msys2-x86_64-20240507.exe下载安装即可。

                【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                1.3 安装依赖环境

                安装完成MSYS2之后,打开MSYS2 MINGW64。

                • MSYS2 MINGW64:用来编译Windows平台64位程序
                • MSYS2 MINGW32:用来编译Windows平台32位程序

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  1.4 更新包数据库

                  pacman -Syu
                  

                  1.5 安装 GCC 编译器

                  pacman -S gcc
                  

                  1.6 安装 Make 工具

                  pacman -S make
                  

                  1.7 安装cmake工具

                  pacman -S cmake
                  

                  1.8 或者一键安装依赖环境

                  pacman -S base-devel mingw-w64-x86_64-toolchain
                  pacman -S cmake
                  

                  1.9 配置环境变量

                  替换为自己的安装路径

                  C:\msys64\mingw64\bin
                  

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  1.10 验证环境变量配置

                  gcc --version
                  
                  g++ --version
                  
                  mingw32-make --version
                  

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  2.创建工程项目

                  2.1 创建一个main.c代码文件

                  新建一个文本文档,然后重命名为mian.c

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  2.2 通过Code打开。

                  鼠标右键,通过Code打开。

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  可以看到,目前C工程项目下,还没有.vscode隐藏目录。隐藏目录下面也没有c_cpp_properties.json、launch.json、 tasks.json和settings.json配置文件。

                  3.安装插件

                  3.1 点击扩展Extensions图标

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  3.2 输入搜索C/C++ Extension Pack

                  安装C/C++ Extension Pack即可。

                  【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                  4. 配置文件

                  4.1 c_cpp_properties.json

                  这个文件是VSCode C/C++扩展(由Microsoft提供)特有的配置文件,用于配置C/C++项目的编译器、标准库路径、编译器选项等。这些设置帮助VSCode提供准确的代码完成功能、语法高亮、错误检查等。

                  • 路径包含:指定编译器用于查找头文件的目录。
                  • 编译器路径:指定项目使用的编译器。
                  • C/C++标准:指定使用的C或C++语言标准。
                  • IntelliSense模式:设置适配的IntelliSense行为,以匹配选择的编译器和平台。

                    自动生成c_cpp_properties.json配置文件。键盘快捷键Ctrl+Shift+P,选择C/C++: Edit Configurations (UI)

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    默认的配置文件

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    自动生成默认的配置文件内容

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    修改C/C++ Configurations内容会自动同步到c_cpp_properties.json

                    修改C/C++ Configurations内容如下

                    选择编译器的路径

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    IntelliSense" 是一个强大的代码完成助手,它提供了自动完成、代码导航、语法提示、参数信息、快速信息等功能。选择gcc-x64 (legeacy)

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    C语言和C++语言标准版本选择C11和C++11

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                    c_cpp_properties.json内容自动同步如下

                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

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

                    4.2 launch.json

                    这个文件用于配置VSCode的调试设置,是使用VSCode内置的调试功能(或连接到外部调试器)时必须配置的文件。它指定了调试器的类型、调试目标程序的路径、必要的调试参数等。

                    • 配置调试会话:如何启动调试器、使用哪个执行文件、传递给程序的参数、环境变量等。
                    • 特定语言的调试配置:如Python、JavaScript、C++等语言特定的调试选项。

                      自动生成launch.json配置文件。点击Run and Debug 按钮

                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                      点击create a launch.json file按钮

                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                      选择C++ (GDB/LLDB)

                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                      生成默认的launch.json文件

                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                      修改内容如下

                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                      {
                          "version": "0.2.0",
                          "configurations": [
                              {
                                  "name": "Launch", // 配置名称
                                  "type": "cppdbg", // 使用cppdbg类型
                                  "request": "launch", // 启动类型请求
                                  "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 你的可执行文件路径
                                  "args": ["Hello", "World"], // 如果需要,添加程序参数
                                  "stopAtEntry": false, // 是否在入口点停止
                                  "cwd": "${workspaceFolder}", // 当前工作目录
                                  "environment": [], // 环境变量
                                  "externalConsole": true, // true使用外部控制台,false使用内部控制台
                                  "MIMode": "gdb", // 调试器模式
                                  "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe", // gdb路径
                                  "setupCommands": [ // 初始命令
                                      {
                                          "description": "Enable pretty-printing for gdb",
                                          "text": "-enable-pretty-printing",
                                          "ignoreFailures": true
                                      }
                                  ],
                                  "preLaunchTask": "Build", // 如果有构建任务,可以指定
                                  "internalConsoleOptions": "openOnSessionStart" // 控制台选项
                              }
                          ]
                      }
                      

                      其中,参数修改如下

                      • miDebuggerPath:gdb调试程序。需要改为自己的msys64安装路径
                      • externalConsole:是否使用外部控制台输出调试信息。
                      • preLaunchTask:调试之前,构建用于task.json创建的任务名称

                        4.3 tasks.json

                        这个文件用于配置VSCode的任务运行器,可以定义和配置自动执行的任务,如编译、测试等。这在构建或部署项目时特别有用。

                        • 自定义任务:编译项目、执行脚本、启动服务等。
                        • 任务组:将多个任务组合在一起,按顺序或并行执行。

                          自动生成tasks.json配置文件。

                          测试代码

                          #include 
                          #include 
                          #include 
                          #include 
                          int main(int argc, char *argv[]) {
                              struct timeval tv;      // timeval结构用于存储秒和微秒
                              struct tm* tm_info;     // 用于存储本地时间信息
                              char buffer[40];        // 字符数组,用于存储格式化的时间字符串
                              int milliseconds;       // 存储毫秒部分
                              time_t time_sec;        // 添加一个time_t类型的变量
                              // 获取当前时间
                              gettimeofday(&tv, NULL);
                              // 将tv.tv_sec转换为time_t类型
                              time_sec = (time_t)tv.tv_sec;
                              // 将秒数转换为本地时间
                              tm_info = localtime(&time_sec);
                              // 将微秒转换为毫秒
                              milliseconds = tv.tv_usec / 1000;
                              // 格式化时间字符串,年月日时分秒
                              strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);
                              system("chcp 65001 > nul");  // 设置命令行编码为UTF-8并隐藏输出
                              // 打印格式化的时间和毫秒
                              printf("当前时间: %s.%03d\n", buffer, milliseconds);
                              printf("There are %d command-line arguments:\n", argc);
                              for (int i = 0; i  
                          

                          自动生成settings.json配置文件。切换到Run and Debug按钮,点击绿色小箭头或者按键F5调试。

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          点击configure Task按钮

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          选择第二个C/C++: gcc.exe build active file,对应MSYS2编译器的路径

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          默认生成的配置文件内容

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          {
                          	"version": "2.0.0",
                          	"tasks": [
                          		{
                          			"type": "cppbuild",
                          			"label": "C/C++: gcc.exe build active file",
                          			"command": "C:/msys64/mingw64/bin/gcc.exe",
                          			"args": [
                          				"-fdiagnostics-color=always",
                          				"-g",
                          				"${file}",
                          				"-o",
                          				"${fileDirname}\\${fileBasenameNoExtension}.exe"
                          			],
                          			"options": {
                          				"cwd": "C:/msys64/mingw64/bin"
                          			},
                          			"problemMatcher": [
                          				"$gcc"
                          			],
                          			"group": "build",
                          			"detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"
                          		}
                          	]
                          }
                          

                          !!!注意,修改label参数,这里的label参数对应了launch.json的preLaunchTask参数.

                          launch.json文件内容

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          tasks.json文件内容

                          【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                          修改后的tasks.json文件内容

                          {
                          	"version": "2.0.0",
                          	"tasks": [
                          		{
                          			"type": "cppbuild",
                          			"label": "Build",
                          			"command": "C:/msys64/mingw64/bin/gcc.exe",
                          			"args": [
                          				"-fdiagnostics-color=always",
                          				"-g",
                          				"${file}",
                          				"-o",
                          				"${fileDirname}\\${fileBasenameNoExtension}.exe"
                          			],
                          			"options": {
                          				"cwd": "C:/msys64/mingw64/bin"
                          			},
                          			"problemMatcher": [
                          				"$gcc"
                          			],
                          			"group": "build",
                          			"detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"
                          		}
                          	]
                          }
                          

                          4.4 settings.json

                          这个文件用于存储VSCode的工作区或用户级的设置。这些设置可以覆盖VSCode的默认行为,包括编辑器的视觉样式、代码格式化规则、插件配置等。

                          • 工作区设置:特定于当前工作区的设置(如字体大小、缩进大小、行为扩展等)。
                          • 全局/用户设置:适用于所有VSCode实例的设置。

                            自动生成settings.json配置文件。键盘快捷键Ctrl+,,打开Settings。

                            【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            切换到Workspace

                            【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            选择Auto Save自动保存功能,改为afterDelay自动保存代码修改。

                            【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            同时settings.json文件自动生成,会自动覆盖掉用户设置的功能。

                            【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            settings.json配置文件内容文件【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            5. Debug

                            5.1 调试代码

                            切换回main.c代码文件,点击F9在需要停止运行的行打上断点,点击F5开始调试代码。

                            【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                            代码运行到断点出停止,左边可以看到局部变量和寄存器的值。

                            5.2 代码调试快捷键

                            F5 - 继续/开始调试

                            • 作用:开始调试会话,或者从中断点(断点)处继续执行程序。
                            • 用途:当你设置了断点并希望程序运行到这些断点时停下,可以使用 F5 来继续执行直到下一个断点。如果程序尚未运行,F5 将启动调试会话。

                              F10 - 逐行执行(不进入函数内部)

                              • 作用:执行下一行代码,但不进入任何函数内部(即如果下一行代码是一个函数调用,它会执行该函数但不跳到函数里面去)。
                              • 用途:用于当你想看程序的执行流程但不想深入每个函数的细节时。它允许你快速跳过函数调用,只关注当前执行流的高层次变化。

                                F11 - 逐行执行(进入函数内部)

                                • 作用:执行下一行代码,如果这行代码是一个函数调用,将进入该函数内部。
                                • 用途:当你需要详细查看函数内部的执行过程和逻辑时使用。它允许你深入每个函数调用,理解函数的具体行为和局部变量状态。

                                  Shift+F11 - 跳出当前函数

                                  • 作用:从当前正在执行的函数中跳出,返回到函数被调用的位置。
                                  • 用途:当你在函数内部但想跳出这个函数,继续在调用后的执行点执行时使用。这在你已经了解函数内部行为,或当你误入一个函数且不希望继续在其中时非常有用。

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    6. Run

                                    不调试,直接运行代码。选择代码文件,点击右上角的小三角按钮旁边的下拉栏,选择Run C/C++ File。

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    选择第一个Launch preLaunchTask: Build,和launch.json配置文件里面的对应

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    运行后,程序不会在断点处停止。

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    可以看到调试后生成的可执行文件。

                                    【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

                                    7. 可能遇到的问题

                                    • launch.json配置文件的preLaunchTask参数留空或者参数名称和tasks.json配置文件的label参数名称不一致。

                                      【VSCode C/C++运行代码带参数Debug调试和Run运行代码】

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]