vscode / ubuntu 下编译和调试 C/C++ 方法

本文详细介绍如何在VSCode中配置C/C++的编译与调试环境,包括安装所需插件、编写tasks.json、launch.json及c_cpp_properties.json配置文件,并通过示例代码演示整个编译和调试过程。

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

零、前言

之前一直将 vscode 做为简单的编辑器使用,对编译调试一知半解,现在有时间好好整理了,咱们开始吧。

一、准备

需要安装 C/C++ 开发插件:

Ctrl + p,在弹出的编辑框中输入如下:

ext install cpptools

装完之后重启。

二、编写配置文件

需要编写的配置文件如下:

tasks.json:这个配置文件是用来执行你预定的任务的,比如说你修改了你的代码,调试之前,肯定要重新生成新的程序后再调试,那么你就可以配置它告诉 vscode 怎么重新生成这个新的程序。(task.json 不是必须文件,比如 python 调试,可以不用提前编译)

launch.json :这个配置文件是告诉 vscode 如何来启动调试你的代码程序的,这其中包括你的程序在哪个位置,你用什么工具来调试,调试的时候需要给调试工具传什么参数等。

c_cpp_properties.json:顾名思义,配置 C/C++ 属性。

简单方法是如下图所示,点击运行按钮

然后选择 gdb,g++ ,vscode 会自动创建 .vscode 文件夹和 tasks.json 和 launch.json 文件。

默认配置如下:

tasks.json

{
    "tasks": [
        {
            // type 告诉 vscode 编译器的类型。
            "type": "cppbuild",
            // task 的名字,在 launch.json 内根据此任务名调用此任务;
            "label": "C/C++: g++ 生成活动文件",
            //该任务需要具体执行的命令。
            "command": "/usr/bin/g++",
            //上述命令需要传入的参数。
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            //设置捕获错误的工具。
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

launch.json 

{
    // 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++ - 生成和调试活动文件",
            // type 告诉 vscode 编译器的类型,使用 gcc 编译器族的是 cppdgb
            // 这个是规定的,不是随便写,比如 msvc 编译器就是 cppvsdbg 。
            "type": "cppdbg",
            //执行当前文件。
            "request": "launch",
            // program 这个是你的可执行程序位置,这里可以根据自己的 tasks.json 生成
            // 程序的位置自定义修改。
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            // ${xxxx} 是 vscode 内置的变量,可以方便获取到需要的路径或者文件名,
            // 这里列举一部分
            // ${workspaceFolder} : 表示当前 workspace 文件夹路径,也即 /home/Coding/Test
			// ${workspaceRootFolderName} : 表示 workspace 的文件夹名,也即 Test
			// ${file} : 文件自身的绝对路径,也即 /home/Coding/Test/.vscode/tasks.json
			// ${relativeFile} : 文件在 workspace 中的路径,也即 .vscode/tasks.json
			// ${fileBasenameNoExtension} : 当前文件的文件名,不带后缀,也即 tasks
			// ${fileBasename} : 当前文件的文件名,tasks.json
			// ${fileDirname} : 文件所在的文件夹路径,也即 /home/Coding/Test/.vscode
			// ${fileExtname} : 当前文件的后缀,也即 .json
			// ${lineNumber} : 当前文件光标所在的行号
			// ${env:PATH} : 系统中的环境变量
            "args": [],
            // 选为 true 则会在打开控制台后停滞,暂时不执行程序,一般选 false 。
            "stopAtEntry": false,
            //当前执行程序的路径
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // preLaunchTask 表示在 执行调试前 要完成的任务。
            // 比如这里 要完成 “C/C++: g++ 生成活动文件” 这个 tasks 任务(重新生成程序)
            // 该名称是 tasks.json 中 label 对应的名称,也就是 task 的名称。
            // task 的名字,一定要跟 tasks.json 中 label 标签一致。
            "preLaunchTask": "C/C++: g++ 生成活动文件",
            // 调试器的路径
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

ctrl+shift+P 打开 Command Palette,运行 C/Cpp: Edit configurations(json) 生成c_cpp_properties.json 文件,默认如下:

{
    "configurations": [
        {
            // 一般是内核的名字就可以了,如 "Linux" 。
            "name": "Linux",
            // 第三方库的头文件可以放在该位置,比如 qt 库。
            "includePath": [
                "${workspaceFolder}/**"
            ],
            // 全局宏放在该位置。
            "defines": [],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-clang-x64"
        }
    ],
    "version": 4
}

三、编写代码

#include <iostream>

int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}

四、编译和调试

编译指令:Ctrl + shift + B

调试指令:F5

编译 + 调试:Ctrl + F5

五、其他

1、vscode 快捷键:

(1)Ctrl + P,在弹出的编辑框中可以做如下内容:

  • 跳到指定的行号:":" + 行号
  • 搜索指定的符号,(例如:函数):"@" + 符号名
  • 搜索文件:直接输入文件名称即可。

(2)Ctrl + Shift + P

执行内置于 vscode 中的命令。

(3)Ctrl + O

打开当前文件所在的资源管理器。

2、格式化代码

安装了 C/C++ 扩展之后,扩展程序将自动安装 clang-format。所以配置 C/C++ 格式化代码规则,实际上就是配置 clang-format ,这个后续补充。

参考:

https://blog.youkuaiyun.com/Taynpg/article/details/109072226

https://blog.youkuaiyun.com/u011947630/article/details/100888525

(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值