零、前言

之前一直将 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.csdn.net/Taynpg/article/details/109072226

https://blog.csdn.net/u011947630/article/details/100888525

(完)

vscode / ubuntu 下编译和调试 C/C++ 方法相关推荐

  1. 一份简单的在 Linux下编译及调试 C 代码的指南

    摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...

  2. Ubuntu 下编译ffmpeg和x264解编码器(翻译的一篇文章:)

    拿出自己一篇早期接触Ubuntu时翻译的文章,对逝去的SEO-DIC.COM.CN这个网站默哀. Ubuntu 下编译ffmpeg和x264解编码器 今年初由于个人的一些原因和其它因素:希奥开源(ht ...

  3. Ubuntu下编译ffmpeg+openh264+x264

    [笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...

  4. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案

    [C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...

  5. Ubuntu下编译SHTOOLS

    SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...

  6. Ubuntu下编译VeraCrypt

    Ubuntu下编译VeraCrypt 1.安装yasm tar zxvf yasm-1.3.0.tar.gzcd yasm-1.3.0/./configure --prefix=/usr/local/ ...

  7. linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3

    ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...

  8. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  9. Ubuntu下编译qt程序libQtWebEngineCore报错

    最近在Ubuntu下编译qt程序时, 报如下错误 libQt5WebEngineCore.so: .dynsym local symbol at index 3 (>= sh_info of 3 ...

最新文章

  1. 看完这篇 JVM 垃圾回收,和面试官扯皮没问题了
  2. 0基础学python-看完这篇,零基础也知道怎么学Python
  3. 电脑端京东的我的订单html+css页面_什么是前端和后端开发?写给即将迈入前端开发领域的朋友...
  4. opencv 取roi_opencv实现人脸识别快速入门
  5. VS2010常用快捷键自定义
  6. ORACLE中的自治事务
  7. vb杨辉三角代码编写_「二次开发」——基于VB.NET的NX UG软件二次开发基础
  8. CoreAnimation-CATransaction
  9. 崚 不能被 iconv(gb2312,utf-8 ,string)
  10. c++ sort 从大到小排序_常用排序算法速度比较
  11. java面向接口编程详解
  12. Java面试题之分布式事务篇
  13. EditPlus 编程背景色设置与代码高亮
  14. 图扑软件数字孪生民航飞联网,构建智慧民航新业态
  15. 苍天有眼,我终于搞定了win7使用建行华大智宝U盾的问题了!
  16. 新基建深度报告:七大领域十大龙头分析
  17. Verilog语言语句介绍
  18. 20岁后长高增高秘诀
  19. 汉诺塔问题及时间复杂度推导
  20. 计算机管理员无法关闭防火墙,Win10关闭防火墙提示:出于安全原因 某些设置由系统管理员管理的解决方法...

热门文章

  1. 修改注册表 为右键添加快捷命令
  2. mongodb系列教程
  3. docker Harbor
  4. Linux 查看电脑基本配置
  5. Hadoop Hive 创建表及count/distinct操作(会被翻译成mr程序)
  6. Pycharm新建Django项目:Hello World示例
  7. Python3 安装PyMySQL
  8. MySQL 开启远程登录权限
  9. 使用$.post和$.get向服务器发送请求
  10. MATLAB中改变默认当前文件夹