使用 VSCode 在 wsl 或 linux 下调试 C/C++

很久之前跌跌撞撞用VSCode调试过C/C++,但是没有系统记录下步骤,今天腾出空来整理分享一下。

本教程对wsl、linux虚拟机、linux物理机均适用

基本步骤

  1. 在 VSCode 中安装叫做 C/C++ 的插件,这个插件包含了debug、代码格式化等一系列功能

  2. 必做:调试功能的配置

    1. 在工作目录下建立 .vscode 文件夹
      (在某些情况下vscode会自动建立此文件夹,也会自动生成调试配置,但自动生成的一般不能用…)
    2. 在.vscode下建立task.json和launch.json,然后将我列在本文最后的代码复制粘贴进去
      在这里插入图片描述
  3. 在vscode调试选项课选择相应配置项,然后调试就行
    调试成功

可以直接使用的配置文件

这里列出常用的配置,使用时复制粘贴一下就好了

  1. 使用makefile,可用于调试固定编译流程的项目
  2. 直接调试当前文件,可用于运行一些临时编写的小程序

使用makefile

launch.json 用于启动程序并进入gdb

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "make",                        //这是在vscode调试选项卡里显示的配置名称
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main",  //这里填写make生成的文件路径 
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "MIMode": "gdb",
            "preLaunchTask": "make",               //这里调用task.json里叫做make的任务,详见task.json
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

task.json 在调试前进行编译等工作,如调用make。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make",   //这里是任务名,需要在launch.json中被调用
            "command": "make", //这里是需要运行的命令,传参在下面一行进行
                               //不能在这一行直接传参,也就是不能写"command": "make all"
                               //注意自己写的make中gcc要加-g生成调试信息,否则无法调试
            "args": ["all"]    //这里是给上面一行的命令传入的参数
        }
    ]
}

直接编译并调试当前打开的文件

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "gcc build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

task.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "gcc build active file",
            "command": "/usr/bin/gcc",
            "args": [//这是给gcc传入的一系列参数,在终端怎样用gcc,这里就要怎样写
                "-g",       //要给gdb生成调试信息,不然vscode下的断点不管用
                "${file}",  //代表当前打开的文件
                "-o",       //代表直接生成可执行文件,用过gcc的都知道
                "${fileDirname}/${fileBasenameNoExtension}",  //自定义生成的文件名,默认是源代码名称去掉扩展名
               // "-lpthread" //我自己写代码要用到pthread库
            ],
            "options": {
                "cwd": "/usr/bin"
            }
        }
    ]
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值