作者:来知晓
链接:https://www.zhihu.com/question/336266287/answer/2144611720
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

===============================================================

目录

总体说明

总体特点:

  • JSON(JavaScript Object Notation) 是基于JavaScript的一种数据交换语言
  • 核心文件:tasks.json / launch.json
  • 其他文件:c_cpp_propertis.json / settings.json / compile_commands.json
  • 辅助插件:C/C++

主要作用:

<img src="https://pic1.zhimg.com/50/v2-208cac174568afb32d1fa2737073658e_720w.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="789" data-rawheight="299" class="origin_image zh-lightbox-thumb" width="789" data-original="https://pic2.zhimg.com/v2-208cac174568afb32d1fa2737073658e_r.jpg?source=1940ef5c"/>

 
 
 
 
 

复用参考配置文件关键点:

  • 拿到demo配置文件,参考tasks.json和launch.json,修改对应gdb/gcc路径和源文件、头文件等
  • 保证lauch调用的exe名与tasks生成的exe名一致,修改完毕后,ctrl + shift + b或点击终端->运行生成任务,即调用tasks.json,生成exe
  • 快捷键F5运行或者点击左侧栏乌龟加播放按钮找到左上角绿色播放按钮,开始调试,即调用lauch.json,运行exe

举例说明

以编译运行单个main.c为例,配置如下:
 

main.c

#include <stdio.h>
int main()
{
printf("Hi World!\n");
return 0;
}
 
 
 
 

目录结构

  • .vscode
    • tasks.json
    • launch.json
  • main.c
 
 
 
 
 
 
 
 
 
 
 
核心文件
 

tasks.json

模板如下:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 需与lauch.json中"preLaunchTask"项命名一致
"type": "shell",
"command": "D:\\xx\\mingw\\bin\\gcc.exe",
"args": [
"main.c",
"-g",
"-o",
"main.exe" // 输出exe名,要与launch中调用的program项命名一致
],
"group": {
"kind": "build",
"isDefault": true
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"problemMatcher": [
"$gcc"
]
}
]
}
 
 
 
 
 
 

launch.json

模板如下:

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gdbdebug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\main.exe", // 调用的exe名,要与tasks生成的exe名一致
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 决定输出是单独外部黑窗口显示,还是在IDE里终端黑窗口显示
"MIMode": "gdb",
"miDebuggerPath": "D:\\xx\\mingw\\bin\\gdb.exe",
"preLaunchTask": "Build", // 此项命名需要与tasks.json中的label项命名一致,作用是每次调用launch时会先调用tasks.json,从而不用自己每次都ctrl+shift+b手动生成最新任务后,才能调用launch
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
 
 
 
 

重要参数说明:

  • program选项为要调试程序的路径,此处为main.exe
  • args为运行时添加的参数
  • stopAtEntry选项默认为false,若设置为true,则会在函数入口中暂停
  • externalConsole为是否在外部控制外运行,设置为true会弹出windows的运行窗口
  • miDebuggerPath为gbd调试器的路径
  • setupCommands为启动调试前为GDB调试器设置相应的命令
  • preLaunchTask选项为运行调试前执行的任务

其他json

c c_cpp_propertis.json / settings.json / compile_commands.json可通过插件自动生成,并做相应的配置调节,不再赘述。

 
 
 
 
 
常见报错

编译提示找不到gcc任务

  • 根因:tasks.json里的label名字和launch.json中的preLaunchTask名字没对应上,导致编译后launch不到对应exe
  • 分析:tasks.json是编译,launch.json是运行exe,tasks.json在lanuch之前。tasks里的label一定要跟launch.json中的preLaunchTask名字对应一致。之后则不会报找不到gcc任务错误。

多个main函数入口,导致编译中止。提示:multiple definition of 'main'

  • 删除掉有关.c文件即可,让这些含main的不参与编译。
  • 或者在tasks.json中排除掉其余main函数相关的c文件,让其不参与编译即可。
 
 
 
 
 


 
 
 
 
 
===========================================================
 
 
 
 

【转载】 vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?的更多相关文章

  1. IDEA中配置Scala开发编译环境

    安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK. 安装Scala Windows安装Scala编译器 访问Scala官网http://www.scala-lang ...

  2. 折腾了好久的vscode配置c/c++语言环境(Windows环境下)

    最近有c语言相关的作业,但是突然再次拿起大一的时候那些c语言编辑器的时候,总觉得不智能,于是下了一个vscode,准备配一个c语言的环境 步骤如下: 1.vs官网下载好vscode,安装好以后再下载一 ...

  3. 使用pipework将Docker容器配置到本地网络环境中

    使用pipework将Docker容器配置到本地网络环境中 需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主 ...

  4. 在R语言环境中无法载入rJava包的解决办法

    问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...

  5. ionic2如何升级到最新版本、配置开发环境

         好久没写东西了,去年用了angular2的RC版本和ionic2写了一个项目,因为开发周期和有些版本不稳定,所以一直没有升级,ng2新版本引用Aot打包,听说优化还不错,现在尝试升级ioni ...

  6. 在VMware虚拟机中配置DOS汇编开发环境!!

    操作系统:win7 32位 DOS环境:DosBox  下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...

  7. ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作

    前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...

  8. vsCode怎么为一个前端项目配置ts的运行环境

    vsCode为一个前端项目配置ts的运行环境,ts文件保存的时候自动编译成js文件: 假设此前端项目名称为Web:文件结构如图 1. 在根目录中新建一个“.vscode”文件夹,里面建一个“tasks ...

  9. vscode中关于launch.json和tasks.json的变量说明

    vscode是一个轻量级的文本编辑器,但是它的拓展插件可以让他拓展成功能齐全的IDE,这其中就靠的是tasks.json和launch.json的配置 这两个json文件的相关变量是vscode特有的 ...

  10. 在VS2008中配置WDK7600驱动开发环境

    网上这类资料多如牛毛,也许很多人都是转来转去,却很有人去真正的测试,有时候感觉确实对他人也是一种误导. 这里是我自己在VS2008 + WDK7600.16385.0 + DDKWizard配置自己的 ...

随机推荐

  1. windows powershell 解压 .gz文件

    windows 10下解压.gz后缀文件 打开windows powershell界面,(1)输入cd desktop(文件的存储位置,示例为存储在电脑桌面上), (2)输入tar -zxvf 需要解 ...

  2. C# .net core中如何将多张png图片合并成一个gif

    背景 我们有很多这样的序列帧: 我这边要把这些序列帧裁切最后合并成gif,以下是我裁切后的png文件: 我一开始选用的是 SixLabors.ImageSharp 这是裁切代码: using var ...

  3. 详解Web应用安全系列(2)注入漏洞之XSS攻击

    上一篇介绍了SQL注入漏洞,今天我们来介绍另一个注入漏洞,即XSS跨站脚本攻击.XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web应用中常见的漏洞.指攻击者在网页中嵌入 ...

  4. C# pythonnet(2)_傅里叶变换(FFT)

    Python代码如下 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 读取数据 data = pd.r ...

  5. P2467 [SDOI2010] 地精部落 学习笔记

    DP 显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了 发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然 ...

  6. 基于 UDP 的 组播、广播详解

    背景 有些时候我们在网络通信中也需要用到 组播(多播).广播.现在我们来介绍如何实现. 建议:在此之前,关闭防火墙. ubuntu: service ufw stop windows: 控制面板关闭 ...

  7. uniapp+thinkphp5实现微信扫码支付(APP支付)

    前言 统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口.下面介绍的是其中APP的支付的配置与实现流程 配置 1.首先登录 ...

  8. Linux Mint操作系统安装

    1,Linux 发行版 什么是Linux 发行版呢?这要从Linux 来源说起.Unix操作系统后期,开始收费和商业闭源了.一个叫Richard  Stallman 的人就发起 GNU 计划,想模仿U ...

  9. 解决BitBucket仓库较大拉取失败,使用SSH拉取

    HTTPS 拉取 如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用 ssh 拉取 git clone --depth=1 xxxx.git --depth=1:拉取最近1次提交记录 ...

  10. Java常见问题-汇总

    一.面试到底在问些什么东西? 首先你要知道,面试官的提问和你简历上写的内容是紧密联系的,所以你简历上写的技能一定要会. 一般面试包括下面几方面知识类型: Java基础.多线程.IO与NIO.虚拟机.设 ...