linux/windows_vscode_配置mingw的C/C++环境(by official doc)/一些可能遇到的问题和对策)/vscode中文输出乱码问题
文章目录
- 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中文输出乱码问题相关推荐
- centos java 乱码,linux(centos7)下程序中文输出乱码问题的解决
目前的程序代码都是在window编写,编码格式为GBK.转移到linux下,编译正常,在控制台运行时中文输出为乱码.查linux的LANG发现为UTF-8,于是修改为GBK.再次运行程序,依然为乱码. ...
- WIN10+MinGW中文输出乱码的解决方法
在win10使用mingw可能会出现这种bug,实测win7是没有的! 可以看到,中文开头就会乱码.试过写文件,没有乱码,似乎是终端显示问题. 解决方案 #include <stdlib.h&g ...
- linux下配置Docker的jupyter notebook环境
jupyter notebook环境配置备忘: 1.安装:pip install jupyter 2.配置: 1)生成配置文件:jupyter notebook --generate-config 2 ...
- Linux下配置简单的图形桌面环境
文章目录 安装mutter窗口管理器和xterm终端 安装TigerVNC Server 创建VNC Server密码 配置VNC Server 关闭防火墙和iptables服务 启动VNC Serv ...
- 在Linux 下配置PHP 支援GD
本站的另一篇文章介绍了在Linux 下配置PHP + MySQL 的执行环境,而照着该篇文章安装的PHP 是未能支援GD 的. 而本文就是介绍在Linux 下安装GD,并配置PHP 支援GD. GD ...
- 关于我在学习Javaweb时对Linux服务器安装配置jdk,tomcat,mysql的一些学习心得
学习javaweb有一段时间了,最近刚好完成一个小的web项目. 勿喷!!!!!!!! 主要参考问题: 1.jdk,tomcat,mysql的安装配置. 2.tomcat,mysql的开机自启(我不会 ...
- WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决
第一部分:问题描述 当WebSphere Application Server(以下简称为WAS)安装到中文Linux平台时,经常出现中文被显示为方块的情况,如下图所示: 图 1 应用程序组装工具乱码 ...
- linux vlc乱码,一劳永逸解决VLC播放中文字幕乱码问题
VLC对于Mac/Ubuntu用户来说算得上是必备软件.其相当于PC机上的"暴风影音",但Mac/Ubuntu的新手使用VLC播放avi时都会碰 到字幕乱码的问题.avi字幕的格式 ...
- linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效
博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6 文章- 2 评论- 2 < ...
最新文章
- 鼠标键盘唤醒计算机,除了按下电源按钮唤醒计算机,WIN10也可以使用鼠标或键盘来唤醒...
- [Embeding-1]Efficient Estimation of Word Representations in Vector Space 译文
- 面试官:为什么SpringBoot的 jar 可以直接运行?
- springboot超详细教程_CG原画插画教程:超详细线稿教程
- android adb apk包名,ADB命令简单使用--查看包名、activity等
- SpringCloud Nacos + Ribbon 调用服务的 2 种方法!
- 《101 Windows Phone 7 Apps》读书笔记-BABY MILESTONES
- python2020未来前景_2020年Python发展前景如何呢?
- 不要让Javascript的等价表格看上去那么难看
- Linux创建内核线程kthread_create的用法介绍
- spark配置IntelliJ开发环境详解
- 银行排队叫号系统项目总结
- Kaldi语音识别:基于aidatatang模型实现自制语音数据的识别
- 迅雷手机版苹果版_免费下载迅雷 iOS 版
- 劳务派遣人员管理办法范文
- 北、上、广、深数据分析职位分析
- 浅谈一类积性函数的前缀和
- H5+Android混合开发电视APP
- 当“国风综艺”遇上“数字金融”,看国有大行解锁营销新范式
- 服务器查看串口打印信息,串口打印服务器如何设置打印机
热门文章
- Nodejs+express 代码工程打包 PKG
- 国家气象局天气预报中城市代码
- php实现兼容Unicode文字的字符串大小写转换strtolower()和strtoupper()
- strtoupper php 中文,strtoupper回导致中文乱码么
- fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
- 不想将就,所以竭尽所能。
- ARM架构Generic Interrupt Controller(GIC)详解之术语介绍
- 【兴趣】儿时背诵过的朝代歌和节气歌
- 万字长文 | 这可能是东半球最保姆级的后台服务器开发学习路线
- vue3在控制台打印相关变量的值