文章目录

    • preface
      • for windows
      • for linux
    • references
      • 官网提供的配置教程(vscode+cpp):
      • 官方文档简述
      • 目录名要求
    • 相关配置文件及含义
    • 从windows开始
      • 创建task.json配置文件(build instructions)
      • requirement
        • vscode cpp 插件
        • Mingw
        • 检查g++/gcc
      • file1:生成tasks.json
        • 修改task.json的内容(optional)
      • 然后准备一个测试代码c/c++
      • 调试
        • 在合适的地方打下断点:
        • 终端和调试控制台
      • 创建&编写launch.json(调试配置文件)
        • 我的launch.json (for windows)
        • 选择调试工具/环境
      • task.json和launch.json的关系
    • 可选的c_cpp_properties.json
    • result
  • 中文输出会乱码?
    • linux + vscode c/c++
  • MinGw细节(optional)(for windows user):
    • 此外,如果要使用code runner插件来编译.c文件,那么注意配置C99编译:
    • 比如:下图。里边有个重要的bin文件夹
    • 将该路径复制;以便配置环境变量
    • 配置环境变量(用户变量/环境变量任意配置一个即可;)双击粘贴刚才复制的路径
    • 检测:
    • 输入g++,如果g++弹出以下内容,说明配置成功;
    • 或者使用g++ -v:(查看g++版本)
    • 建立规范的目录
    • 然后按F5,开始调试,会弹出:
    • 选择编译器完毕后

preface

for windows

初学者还是建议用visual studio 2019+或其他版本,它们体积虽庞大,但是调试功能无比强大,变量类型,变量内存情况,调用堆栈,强大的调用层次分析

for linux

linux下使用vscode可以执行一些简单的编译,可以搭配手写编译命令/makefile/或者其他编译命令行生成工具

references

官网提供的配置教程(vscode+cpp):

https://code.visualstudio.com/docs/cpp/config-mingw

官方文档简述

  • (利用默认生成的配置文件,快速配置环境)
    私以为官方文档写的相当详实,且较为全面,一步一步的教授读者配置,相当好的一份文档,可以优先跳转到官方文档进行学习

网络上的其他相关配置文章大多不如官方介绍的那样好,那样全面

目录名要求

以下配置在文件(及其路径名中纯英文下可行,中文会引发出错)
但还是可以运行中文名cpp编译的源程序(主要是调试会有问题)
可以考虑将文件名重命名为英文

相关配置文件及含义

tasks.json (build instructions)
launch.json (debugger settings)
c_cpp_properties.json (compiler path and IntelliSense settings

从windows开始

创建task.json配置文件(build instructions)

创建tasks.json文件是为了下次执行编译任务(run build task.)的时候不需要再次选择编译器.
同时方便配置launch.json,便于配置单步调试

requirement

vscode cpp 插件

Mingw

  • 在系统环境变量(Path)变量中配置编译器所在路径,使得命令行中可以直接调用gcc或者g++
  • 当然,如果还安装了visual stuido(比如vs2019),那么可以使用vs提供的编译工具

检查g++/gcc

g++ -v

file1:生成tasks.json

或者

  • 接着,您检查一下.vscode目录下的文件是否包括:
    task.json

修改task.json的内容(optional)

这一步不是必须,具体字段参看文档
值得关注的是,字段lable,譬如"label": "C/C++: gcc build active file",,该字段的值将在后续的launch.json中引用,来使得项目(launch.json能够指引vscode找到正确的task.json进行编译源代码
总之,这个名字和后续提到的launch.json中的"preLaunchTask"字段取值一致即可
譬如,这里提到的两个字段可以都取: "C/C++: gcc build active file",

然后准备一个测试代码c/c++

#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};for (const string& word : msg){ cout << word << " ";}cout << endl;
}

调试

在合适的地方打下断点:

  • 如果之前您的mingw环境可用(#include头文件正常)
    那么可以就可以调试啦(task.json)的内容会自动生成,
  • 现在,您按下ctrl+shift+b(command palette 中执行run build task ),执行task.json

终端和调试控制台

需要交互的控制台点击terminal选项卡输入(not debug console)

此时您应当在当前目录下得到一个.exe文件(可以用于调试)
此时具有最基本功能,但还不方便,编译完的程序还要手动选择并运行(F5)

创建&编写launch.json(调试配置文件)

使用launch.json使得编译调试一气呵成


或者

Note:在2022年的时候,我重新试了官方文档的流程,发现在配置launch.json的时候,生成的模板是空的,
没关系,只需要将下文提供的模板粘贴到launch.json中(该模板来自参考文档),在修改"preLaunchTask": 字段的值使得其与task.json中提到的lableh值一致即可,如果恰好一致就不用改

  • 您可以手动在.vscode目录下创建一个launch.json
  • 也可通过点击图标创建

  • 手动编写过程中有模板提示

我的launch.json (for windows)

根据我的Mingw(g++),生成的launch.json:
这样子生成的我文件目录是配好的,也可以根据文档的字段解释进行参数修改
主要是MinGw中的gdb程序文件目录:miDebuggerPath以及preLaunchTask编译配置文件名称(label in task.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++.exe - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "D:\\MinGW64\\bin","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "D:\\MinGW64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}

选择调试工具/环境


如下结果视vscode版本和c++插件版本的不同而异,如果有第一项最好(第二项也可以)选择之后,即可使用
还可以自行配置其内容

task.json和launch.json的关系

F5运行launch.json,launch.json会执行task.json指定的任务(作为launch.json的预执行任务(编译c/cpp得到可执行文件),然后执行launch的主体任务(运行得到的可执行文件)
这体现在launch.json中的"preLaunchTask": "C/C++: g++.exe build active file"

可选的c_cpp_properties.json

C/C++ configurations#
您可以在这里选中/切换编译器种类,且配置完毕后将vscode重启(如果为未能立即看到效果),以便使变更生效

在某些时候,该配置很有用,比如您要使用自己编写的头文件/库(或则来自其他人便携的相关程序,在此处更改即可)

If you want more control over the C/C++ extension, you can create a
c_cpp_properties.json file, which will allow you to change settings
such as the path to the compiler, include paths, C++ standard (default
is C++17), and more.

You can view the C/C++ configuration UI by running the command C/C++:
Edit Configurations (UI) from the Command Palette (Ctrl+Shift+P).

result

中文输出会乱码?

如果您使用cmd作为默认vscode的terminal,可能再输出中文时会乱码
如果时windows10以上的系统,已经自带powershell(但自带版本太老,还是很肯能会乱码)
现在建议您安装powershell7+的新版本作为默认的terminal
然后再安装一个oh my posh 主题,配上Nerd Font字体,您就可以看到上图中的效果,而且不会中文输出时就乱码


new posh (with Hack Nerd Mono Font):

linux + vscode c/c++

  • 由于linux安装的gcc/g++/gdb位置比较统一,配置起来会稍微更方便一些
  • 总体流程几乎一样

MinGw细节(optional)(for windows user):

1.首先是到官网下载MinGw installer 安装文件(比较慢)(或者其他自带mingw的ide,比如DEV-cpp)
网站有时比较慢,下载也比慢;(可能要访问外网)
考虑第三方下载;
https://wws.lanzoui.com/i7ncnr1855g
密码:hg9b

将文件解压到某个你熟悉的路径

正式开始配置前,请把之前产生的该目录下的.vscode文件夹删除,(里面的.json文件删除)
已以免旧文件和配置操作产生新文件引起冲突

此外,如果要使用code runner插件来编译.c文件,那么注意配置C99编译:

详情可以看:

https://blog.csdn.net/xuchaoxin1375/article/details/111644789
这个链接的文章对code runner插件运行c++(C可以做类似的修改)配置做了源文件名的容错优化,基本解决了因为文件名包含空格,小数点等非标识符组成字符带来的异常.!!!
但是,如果要调试,那么依然不能包含中文

比如:下图。里边有个重要的bin文件夹

将该路径复制;以便配置环境变量

配置环境变量(用户变量/环境变量任意配置一个即可;)双击粘贴刚才复制的路径

检测:

在键盘上按win+R:再输入cmd

输入g++,如果g++弹出以下内容,说明配置成功;

或者使用g++ -v:(查看g++版本)

弹出非报错内容即为成功

建立规范的目录

现在,可以在你喜欢的任意地方建立一个不含中文,注意不含中文的规范名字(当然,如果包含中文,那么虽然您可以编译运行,但是gdb就无法调试了(基于Microsoft C++或许可以),的文件夹(最好满足变量标识符的命名规则的文件夹,)然后用vscode打开这个文件夹
编写一个简单的hello world程序:

#include<iostream>
using namespace std;
int main()
{cout<<"hello,world"<<endl;cout<<1+1<<endl;
}

然后按F5,开始调试,会弹出:

注意,如果您在某个已有和调试.json文件相关的文件(launch.json),那么应当将其备份后删除,然后在添加全新的调试文件:
这种情况可能发生在之前没有成功的配置文件残留下来的
可能是您在某个其他类型语言的工程目录下开始本教程,不过您可以通过如下界面来规避上述两个问题:
点开debug,选择合适的调试配置json文件(这里没有c/c++的调试配置文件(只有python的配置文件):

Add Configuration:

然后选择对应的调试配置文件

选择编译器完毕后

在左侧出现文件夹.vscode 里面有launch.json和task.json

如果mingw的路径发生变化,那么可以修改launcher.json和tasks.json中的路径:

(到这里基本可以使用了,但还不是很方便,输出的内容要从终端选项卡转到调试控制台console那里去看结果)

想要根据直观的从弹出的终端中查看调试过程中打印的信息,可以再做如下配置:打开左侧里的launch.json文件;

如果程序因为错误编译不通过;

正确程序的正常调试:

为了结果一闪而过,建议在程序中的合适位置打断点!;

如果,此前已经安装了最新版(5.15)的DevC++
那么. vscode文件夹中的launch.json和task.json就是
一步到位的.



立即修改如下选项,才可以正常使用:(true)

当然你可能还需要最新版本的vscode配合.

linux/windows_vscode_配置mingw的C/C++环境(by official doc)/一些可能遇到的问题和对策)/vscode中文输出乱码问题相关推荐

  1. centos java 乱码,linux(centos7)下程序中文输出乱码问题的解决

    目前的程序代码都是在window编写,编码格式为GBK.转移到linux下,编译正常,在控制台运行时中文输出为乱码.查linux的LANG发现为UTF-8,于是修改为GBK.再次运行程序,依然为乱码. ...

  2. WIN10+MinGW中文输出乱码的解决方法

    在win10使用mingw可能会出现这种bug,实测win7是没有的! 可以看到,中文开头就会乱码.试过写文件,没有乱码,似乎是终端显示问题. 解决方案 #include <stdlib.h&g ...

  3. linux下配置Docker的jupyter notebook环境

    jupyter notebook环境配置备忘: 1.安装:pip install jupyter 2.配置: 1)生成配置文件:jupyter notebook --generate-config 2 ...

  4. Linux下配置简单的图形桌面环境

    文章目录 安装mutter窗口管理器和xterm终端 安装TigerVNC Server 创建VNC Server密码 配置VNC Server 关闭防火墙和iptables服务 启动VNC Serv ...

  5. 在Linux 下配置PHP 支援GD

    本站的另一篇文章介绍了在Linux 下配置PHP + MySQL 的执行环境,而照着该篇文章安装的PHP 是未能支援GD 的. 而本文就是介绍在Linux 下安装GD,并配置PHP 支援GD. GD ...

  6. 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得

    学习javaweb有一段时间了,最近刚好完成一个小的web项目. 勿喷!!!!!!!! 主要参考问题: 1.jdk,tomcat,mysql的安装配置. 2.tomcat,mysql的开机自启(我不会 ...

  7. WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决

    第一部分:问题描述 当WebSphere Application Server(以下简称为WAS)安装到中文Linux平台时,经常出现中文被显示为方块的情况,如下图所示: 图 1 应用程序组装工具乱码 ...

  8. linux vlc乱码,一劳永逸解决VLC播放中文字幕乱码问题

    VLC对于Mac/Ubuntu用户来说算得上是必备软件.其相当于PC机上的"暴风影音",但Mac/Ubuntu的新手使用VLC播放avi时都会碰 到字幕乱码的问题.avi字幕的格式 ...

  9. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

最新文章

  1. 鼠标键盘唤醒计算机,除了按下电源按钮唤醒计算机,WIN10也可以使用鼠标或键盘来唤醒...
  2. [Embeding-1]Efficient Estimation of Word Representations in Vector Space 译文
  3. 面试官:为什么SpringBoot的 jar 可以直接运行?
  4. springboot超详细教程_CG原画插画教程:超详细线稿教程
  5. android adb apk包名,ADB命令简单使用--查看包名、activity等
  6. SpringCloud Nacos + Ribbon 调用服务的 2 种方法!
  7. 《101 Windows Phone 7 Apps》读书笔记-BABY MILESTONES
  8. python2020未来前景_2020年Python发展前景如何呢?
  9. 不要让Javascript的等价表格看上去那么难看
  10. Linux创建内核线程kthread_create的用法介绍
  11. spark配置IntelliJ开发环境详解
  12. 银行排队叫号系统项目总结
  13. Kaldi语音识别:基于aidatatang模型实现自制语音数据的识别
  14. 迅雷手机版苹果版_免费下载迅雷 iOS 版
  15. 劳务派遣人员管理办法范文
  16. 北、上、广、深数据分析职位分析
  17. 浅谈一类积性函数的前缀和
  18. H5+Android混合开发电视APP
  19. 当“国风综艺”遇上“数字金融”,看国有大行解锁营销新范式
  20. 服务器查看串口打印信息,串口打印服务器如何设置打印机

热门文章

  1. Nodejs+express 代码工程打包 PKG
  2. 国家气象局天气预报中城市代码
  3. php实现兼容Unicode文字的字符串大小写转换strtolower()和strtoupper()
  4. strtoupper php 中文,strtoupper回导致中文乱码么
  5. fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
  6. 不想将就,所以竭尽所能。
  7. ARM架构Generic Interrupt Controller(GIC)详解之术语介绍
  8. 【兴趣】儿时背诵过的朝代歌和节气歌
  9. 万字长文 | 这可能是东半球最保姆级的后台服务器开发学习路线
  10. vue3在控制台打印相关变量的值