vscode + wsl/ssh 搭建linux下C++的编译、调试环境

本文详细指导如何在VSCode中配置远程Linux环境,以便于C++开发与调试,包括安装必要的插件、配置SSH连接、设置调试配置和使用gdb。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下调试C++程序一般用gdb或log的方式,gdb虽然能断点单步调试,但是纯命令行调试不够方便直观,vscode推出了远程调试的一些插件,可以方便的搭建linux下的C++开发、调试环境,下面就一步步打造linux的的开发环境吧

vscode环境配置

  • 安装插件 Remote - SSHRemote - WSLRemote Development, C/C++,全部选微软官方的版本
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 添加要连接的远程机器,wsl和ssh的操作方式是一样的,只是ssh需要配置一下ssh登录,这个随便一搜就有了

  • 在这里插入图片描述
    这里我是连的本地的wsl版本的linux

  • 配置调试
    在这里插入图片描述
    从 Remote Explorer定位到你需要调试的工程的入口
    在这里插入图片描述

  • 在远程机器上安装vscode插件(此时我们的环境已经在远程机器上了)

  • 在这里插入图片描述
    把第一步的那些插件在远程机器上再装一遍,会有如上提示,告诉你这是装在wsl上的

远程linux机器配置

  • 安装g++, make等一堆编译、调试工具,以Ubuntu为例

sudo apt install g++ make gdb

vscode调试配置

  • 打开需要调试的工程的任意源文件后,(这里不打开一个文件的话,会报错),按下F5,选gdb/lldb那一栏
    在这里插入图片描述
    选择你的编译器,这里就按需选择了,我这里选的是g+±9
    在这里插入图片描述
    然后再你的在你的.vscode目录下会出现两个文件,顾名思义,launch.json是启动调试的入口文件,task是其他子任务在这里插入图片描述

launch.json配置

默认的长这样:
在这里插入图片描述

  • program:调试的时候启动的程序路径,也就是你需要调试的程序路径,一般设置成你编译输出的路径即可(要定位到文件,不能只是目录),这里按需修改即可
  • args:程序启动时的命令行参数,没有就留空
  • cwd:程序运行的工作目录,按需修改,默认就是你按F5时当前的目录
  • preLaunchTask:启动调试前的任务名称,一般就是编译了(如果是调试现有程序,就不需要这一步,可以直接删掉),这个后面将attach调试的时候再提
  • miDebuggerPath:就是调试器的路径了,也就是刚才安装的gdb的路径,一般就是默认的路径

tasks.json

这个文件定义了一些任务,可以再launch.json中调用
默认长这样:
在这里插入图片描述

  • lable就是任务名称了
  • command:任务启动的命令,我们这里需要进行编译,所以命令就是g++的路径了,如果之前你选了其他编译器,自然就是其他编译器的路径
  • args:命令的参数,这里就是g++的参数,需要注意的是,不能在一个字符串中写多个命令选项,会报错,需要拆开,比如:
    在这里插入图片描述
    因为这样的命令参数传递给g++后就变成了:

g++ "-Werror=format -std=c++17 -L. -lNanoLog -pthread -lrt"

正常g++的参数是不需要 引号的
正确的姿势:
在这里插入图片描述

愉快的调试吧

完整launch.jons:

{
    // 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": "g++-9 - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/sampleApplication",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++-9 build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

完整task.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++-9 build active file",
            "command": "/usr/bin/g++-9",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/sampleApplication",
                "-I", "../runtime",
                "-Werror=format", "-std=c++17",
                "-L.", "-lNanoLog", "-pthread", "-lrt"

            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

打好断点,按下F5,就能像visualstudo中一样方便的调试了
在这里插入图片描述

使用make + makefile进行编译构建

上面我们使用的是g++进行编译的,但是很多开源项目都是用的make进行构建的,那我们来调整一下task.json,然他支持make;

其实经过上面的配置,我们能理解到,task.json其实就是配置一下构建的命令而已,所以我们把command修改为makeargs修改为make对于的命令参数即可,

使用make要注意makefile的位置和工作路径的位置关系,不然容易出现找不到makefile的问题

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++-9 build active file",
            "command": "make",
            "args": [
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

launch.json、task.json中的一些预定义变量查询:
https://code.visualstudio.com/docs/editor/variables-reference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值