1、WSL环境准备,

开启WSL开关,立即重启电脑

我发现wsl开启后,vmware运行虚拟机会报错"VMware Workstation 在此主机上不支持嵌套虚拟化",这个兼容问题暂时没解决

2、安装ubuntu系统

打开Microsoft store,选择ubuntu获取安装即可

2.1、wsl相关命令记录(在终端上输入)

1、暂停wsl中的ubuntu系统运行
wsl --terminate Ubuntu-20.04

2、查看当前已安装的wsl发行版名称(查看当前正在运行的wsl)
wsl -l -v

3、如何删除wsl已经安装Ubuntu系统
wsl --unregister Ubuntu-20.04

3、vscode相关插件安装

3.1、wsl插件安装

3.2、C/C++插件安装

可参考我的另一篇插件安装
https://blog.csdn.net/GHL284271090/article/details/155744247?spm=1001.2014.3001.5502

4、vscode连接wsl环境

连接成功,vscode左下角状态如图

5、用vscode打开unbuntu上代码

6、新建launch.json、c_cpp_properties.json文件

6.1、在vscode界面上,右键.vscode,新建这3个文件

6.2、launch.json(调试器配置文件)内容如下:(这步要配置好,否则无法调试、下断点)

{ 
    "version": "0.2.0",
    "configurations": [
        {
            "name": "chatserver",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/user/code/flamingo-master/flamingoserver/chatserver",
            "args": [],
            "stopAtEntry": false,
            "miDebuggerArgs": "",
            "cwd": "/home/user/code/flamingo-master/flamingoserver",
            "environment": [],
            "externalConsole": false,
            "pipeTransport": {
                "debuggerPath": "/usr/bin/gdb",
                "pipeProgram": "/usr/bin/bash",
                "pipeArgs": [
                    "-c"
                ],
                "pipeCwd": ""
            },
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

相关字段讲解说明

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug chatserver",        // 调试配置名称(显示在下拉菜单中)
      "type": "cppdbg",                  // 调试器类型(cppdbg = C/C++)
      "request": "launch",               // 启动方式:launch(本地运行)或 attach(附加到进程)
      "program": "${workspaceFolder}/chatserver", // 要调试的可执行文件路径
      "args": [],                        // 程序启动参数
      "stopAtEntry": false,              // 是否在 main 函数入口暂停
      "cwd": "${workspaceFolder}",       // 工作目录
      "environment": [],                 // 环境变量
      "externalConsole": false,          // 是否使用外部终端
      "MIMode": "gdb",                   // 使用 GDB 作为底层调试器
      "setupCommands": [                 // GDB 初始化命令
        {
          "description": "Enable pretty-printing",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "build-chatserver" // 调试前自动执行的任务(关联 tasks.json)
    }
  ]
}

6.3、c_cpp_properties.json(只管“智能提示”——告诉 VS Code 头文件在哪、用啥标准、开哪些宏;写不对就红波浪线,写对了一键跳转爽到飞起),内容如下:

{
    

    "configurations": [
        {
    
            "name": "Linux",
            "includePath": [
                "/usr/include",
                "${workspaceFolder}"
            ],
            "defines": [
                
            ],
            "compilerPath": "/usr/bin/gcc",
            "intelliSenseMode": "gcc-x64",
            "browse": {
    
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "",
                "path": [
                    "${workspaceFolder}"
                ]
            }
        }
    ],
    "version": 4
}

相关字段说明如下:

{
  "configurations": [
    {
      "name": "Linux",                     // 配置名称(显示在状态栏)
      "includePath": [                     // 头文件搜索路径(最关键!)
        "${workspaceFolder}/**",
        "/usr/include",
        "/usr/local/include"
      ],
      "defines": [                         // 预处理器宏定义
        "__linux__",
        "DEBUG"
      ],
      "compilerPath": "/usr/bin/gcc",      // 编译器路径(用于推导默认 include 和 C++ 标准)
      "cStandard": "c17",                  // C 语言标准
      "cppStandard": "c++17",              // C++ 语言标准
      "intelliSenseMode": "linux-gcc-x64", // IntelliSense 模式(匹配平台和编译器)
      "configurationProvider": "ms-vscode.cmake-tools" // 可选:由 CMake Tools 动态提供配置
    }
  ],
  "version": 4
}

7、调试程序,F5启动调试

至此,可以用vscode调试WSL中的C++ 代码;这个只是锦上添花功能,基本功gdb调试一定要熟练掌握。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐