vscode

Linux版本配置(简要)

1、下载安装vscode

https://code.visualstudio.com/Download

2、安装cpptools插件

打开vscode,按ctrl+p打开快速命令框,输入以下命令后等待

ext install cpptools

vscode在短暂的联网查找后会列出插件列表,如图: 

点击箭头所指处的按钮安装插件,安装过程可能会有些慢耐心等待

安装完成后vscode会提示你重启vscode,此时重启即可

更新:因为我装这个插件已经是几年之前了,不确定现在界面还是不是这样,但是意思不变,装完后点重新加载就行了

3、安装编译、调试环境

(若是电脑上原来装着codeblocks,Dev C++等可以跳过这步,

直接跳到  【4、配置系统环境变量path】 这步即可)

目前windows下调试仅支持 Cygwin 和 MinGW。

这里使用的是MinGW.

下面是MinGW的安装配置过程:

http://mingw.org/

进入官网点击右侧 Download Installer下载安装器

打开安装器点击install准备安装:

选择一个安装目录,默认为C:\MinGW这里选择的是A:\MinGW

点击Continue开始安装,安装过程需联网,若安装时提示error则需翻墙安装

安装过程很快,结束后Continue按钮恢复为可用状态,点击完成安装。

打开MinGW安装管理器进行进一步配置

注意这里gdb必选,否则无法调试

选中几个需要的项右键Make for Installation进行标记,其中gcc和g++为c和c++编译器

选择完全部想要安装的项后点击左上角Installation菜单下的Apply Changes应用修改,过程需联网,中间出现error可先继续,若最后失败则需翻墙更新,建议翻墙。

更新:单独装MinGW ,我最早是这么搞的,要是发现不可以(无法下载或者很怀疑自己MinGW没安装好等),可以试试codeblocks或者Dev-cpp等等,这些IDE自带编译器,还是看这篇文章里面有使用codeblocks自带的MinGW的细节,当然要是可以就继续。

4、配置系统环境变量path

然后配置系统环境变量path,这一步为必须

在 我的电脑 上右键 属性:

然后按照下面步骤做即可,注意最后新建的项要与之前MinGW安装位置相对应

Windows7注意,要加入,不是覆盖!我第一次不小心把原来路径覆盖了。。。(因为win7不像win10那么明显是加入。。)

再次打开vscode,注意配置系统环境变量path后重启一下vscode 

注意vscode调试需要在打开的文件夹中进行(注意!是用VSC打开文件夹!!,单独打开一个单独的cpp是没有下面的几个配置文件出现的!!也就是说,这个cpp要在一个文件夹里!不像DevCpp和C-Free可以直接调试一个单独的cpp!!)

5、修改vscode调试配置文件

打开文件夹后,新建test.cpp(随便建,或者main.cpp)进行输入代码测试

如图示进入调试界面选择C++:

更新:现在点击之后变成了这样的:VScode还会让你再选一个,都选第一个吧

然后会在工作目录下的生成一个launch.json的启动配置文件:

使用下面代码替换该文件:(只是在vsc自己产生的json文件加了一些行)

launch.json中有很多属性可以设置, 通过智能提示查看有那些属性可以设置, 如果要查看属性的具体含义, 可以把鼠标悬停在属性上面, 会属性的使用说明.

"version":"0.2.0",

"configurations": [

        { 

"name":"(gdb) Launch",//配置名称,将会在启动配置的下拉菜单中显示

"type":"cppdbg",//配置类型,这里只能为cppdbg

"request":"launch",//请求配置类型,可以为launch(启动)或attach(附加)

"program":"${workspaceFolder}/${fileBasenameNoExtension}.exe",//将要进行调试的程序的路径

"args": [],//程序调试时传递给程序的命令行参数,一般设为空即可

"stopAtEntry":false,//设为true时程序将暂停在程序入口处,一般设置为false

"cwd":"${workspaceFolder}",//调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录

"environment": [],

"externalConsole":true,//调试时是否显示控制台窗口,一般设置为true显示控制台

"MIMode":"gdb",

"miDebuggerPath":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gdb32.exe",//miDebugger的路径,注意这里要与MinGw的路径对应

"preLaunchTask":"g++",//调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc

"setupCommands": [

                { 

"description":"Enable pretty-printing for gdb",

"text":"-enable-pretty-printing",

"ignoreFailures":true

                } 

            ] 

        } 

    ] 

}

更新:注意:如评论区所说,workspaceRoot已被弃用,现改为workspaceFolder,上面的代码我已经改好了

更新:vscode默认的"externalConsole": false,,而我这里改为了true,改为true即在控制台内部运行,不显示黑框,但是要是不显示黑框似乎没法输入(cin或者scanf)了(没怎么试过,读者可以试试)

注意miDebuggerPath要与MinGw的路径对应 ,我用的codeblocks的gdb,见上面的json文件。

注意miDebuggerPath是\\,与直接粘贴过来的路径不一样,需要加一个”\”(冒号后面的两个反斜杠“\\”),或者使用一个“/”

替换后保存,然后切换至test.cpp,按F5进行调试,此时会弹出一个信息框要求你配置任务运行程序,点击它~

【注意】,上面的那个目前的cpp插件似乎没有了,若是直接按F5会出现下面这个图,不清楚评论区童鞋说的是不是这个?

请点击第二个“配置任务”,然后出现这个:点就行了~

之后出现:

在这里随便选一个:(我选的others)【随便选,反正最后tasks.json文件要被覆盖】【下面的图是更新之前的图】

更新:现在变成这样的了:我选的第三个,g++那个

然后用下面代码替换:【更新:原来的"version": "0.2.0"似乎会有下划线报错,那就按照vscode说的改为2.0.0好了,下面的是最新的复制即可。】

{

"version":"2.0.0",

"command":"g++",

"args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"],// 编译命令参数

"problemMatcher": {

"owner":"cpp",

"fileLocation": ["relative","${workspaceFolder}"],

"pattern": {

"regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

"file":1,

"line":2,

"column":3,

"severity":4,

"message":5

        }

    }

}

更新:我发现使用vscode自己生成的`tasks.json`,似乎也可以成成功运行,我把VSCode自己生成的这个json文件也贴上来(稍加改动):这个json文件和上面那个都是可以使cpp正常运行的

{

// See https://go.microsoft.com/fwlink/?LinkId=733558

// for the documentation about the tasks.json format

"version":"2.0.0",

"tasks": [

        {

"type":"shell",

"label":"g++",//这里注意一下,见下文

"command":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\g++.exe",

"args": [

"-g",

"${file}",

"-o",

"${fileDirname}\\${fileBasenameNoExtension}.exe"

            ],

"options": {

"cwd":"C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin"

            },

"problemMatcher": [

"$gcc"

            ]

        }

    ]

}

注意:“label”那一行,要和前面的`launch.json`中的"preLaunchTask": "g++"这里写的一样,因为前面`launch.json`中的"preLaunchTask"里我改为了g++,所以这里我也改为g++,vscode默认的是`g++.exe build active file`【`launch.json`("preLaunchTask": "g++.exe build active file")和`tasks.json`("label": "g++.exe build active file"),都是默认的这个,当然无论是什么,只要保持一致就行】

保存一下,然后切换至test.cpp,再次按F5启动调试~

【更新:似乎下面的步骤配置c_cpp_properties.json不需要了,因为我按照上面的步骤来似乎没有在头文件有下划线和原来有的灯泡图标什么的,所以下面的开始到 “6、其他” 之前可以不用看,到这里基本配置完成】

配置c_cpp_properties.json

保存一下,然后切换至a.cpp,再次按F5启动调试。

如果前面的配置都对的话,这个时候会进行编译,然后跳出黑框输出Hello World,之后窗口又迅速消失。

可能大多数人已经习惯了VS/VC的便利,其实我们这只要在末尾加上一个cin输入即可。加上int pause;cin>>pause;后再按F5。

但是这个貌似不够高大上,其实我们一般是使用system('pause');实现,换上后再次运行,这时候报错了。因为我们我们引用的库有问题,没有正确引用进来,注意这里不是VS/VC,需要我们自己配置路径。

注意:之前在下载安装GNU哪里已经配置了相应的环境变量,但是VScode中有个配置文件,他是根据自己的配置文件来找的。

在编辑器中,有小波浪的就是代码有问题,看下#include<iostream>,左边有个灯泡,点击后跳出配置文件,修改其中的Win32的"includePath"如下,和上文一样,根据自己的路径进行调整即可。经测试,下图中代码的注册部分仍是必要部分

{

"name": "Win32",

"includePath": [

"C:/Program Files/MinGW/include/*",

"C:/Program Files/MinGW/lib/gcc/mingw32/5.3.0/include/*"

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/*",

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/mingw32/*",

"C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/backward/*"

],

"browse": {

"limitSymbolsToIncludedHeaders": true,

"databaseFilename": ""

}

}


6、其他

一劳永逸:因为VS需要为每一个文件夹做单独配置,所以建议把.vscode文件夹放到你常用的文件夹的顶层,这样就不用重复配置了。

不用每个新cpp文件就要一套配置。这些配置在你配置好的文件夹内的所有子文件夹和文件都能使用。


最后效果:

设置断点,变量监视,调用堆栈的查看:

条件断点的使用:

新更新:【红色的是很早很早前更新的,2018.12.29更新,会用绿色的字体表示】

最后补一句:

vscode似乎还仅仅支持英文文件名的调试,中文调试的话就会出现“找不到文件XXXXX.cpp”(大意,原文记不清了,因为距离这个问题我已经解决很长时间了,今天看到想补一下,别让新人踩坑了。。。),然后问是否要创建,不知道是BUG还是啥,这纠结了我N久,因为我有些cpp文件是中文命名的,我去Github上找相应的issue也没有找到我想要的这个问题解答,最后偶然间发现英文命名的文件调试时不会出现这个问题,才解决了!!真的很坑!!!新人注意!!!这里浪费了我很长很长时间!!

【要是根据上述方法还没有配置成功,请看评论区是否有人提出了类似问题,还可以按照我在这篇文章之后一段时间写的一篇:这篇文章,那篇文章使用了codeblocks自带的MINGW,而且配置方法比这个简单一些(因为这个是最早写的),要是始终有问题,欢迎留言,我会抽时间尽我所能解答(非大神有好多解答不了。。。) 】


Linux版本配置(简要)

也是很早之前配置过Linux的,今天我偶然发现了有以前用Linux配置的文件,感觉步骤都和windows配置不多(似乎没有miDebuggerPath这一项),直接上文件了:

【注意:不确定这个还能不能用,因为是很早之前的了,仅仅做参考】

launch.json:

{

"version":"0.2.0",

"configurations": [

        {

"name":"(gdb) Launch",//配置名称,将会在启动配置的下拉菜单中显示

"type":"cppdbg",//配置类型,这里只能为cppdbg

"request":"launch",//请求配置类型,可以为launch(启动)或attach(附加)

"program":"${workspaceRoot}/${fileBasenameNoExtension}.o",//将要进行调试的程序的路径

"args": [],//程序调试时传递给程序的命令行参数,一般设为空即可

"stopAtEntry":false,//设为true时程序将暂停在程序入口处,一般设置为false

"cwd":"${workspaceRoot}",//调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录

"environment": [],

"externalConsole":true,//调试时是否显示控制台窗口,一般设置为true显示控制台

"MIMode":"gdb",

"preLaunchTask":"g++",//调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc

"setupCommands": [

                {

"description":"Enable pretty-printing for gdb",

"text":"-enable-pretty-printing",

"ignoreFailures":true

                }

            ]

        }

    ]

}

tasks.json:

{

"version":"0.1.0",

"command":"g++",

"args": ["-g","${file}","-o","${fileBasenameNoExtension}.o"],// 编译命令参数

"problemMatcher": {

"owner":"cpp",

"fileLocation": ["relative","${workspaceRoot}"],

"pattern": {

"regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",

"file":1,

"line":2,

"column":3,

"severity":4,

"message":5

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容