vscode 日志文件_VSCode使用WSL环境开发C语言配置
在Linux发行版下开发的最大问题是一堆Windows独占软件,即使Deepin做了许多努力,让QQ、TIM、网易云音乐和其他一些常用应用可以运行,还是有很多好东西如Onenote、微云同步客户端之类的无法运行,更别说微信这种虽然能运行但稳定性有很大问题的应用。碰巧,看到了WSL(windows下的linux子系统)在经过一年多更新后有了许多改进,尝试从Deepin搬回Windows,并且要解决Windows下Linux C的开发环境配置。
需要注意的是,本方法所需要的win10版本必须在15063以上,也就是创意者更新之后的版本。你可以打开命令行输入winver查看自己的版本。关于WSL的安装请自行解决,具体选择哪个发行版没有很大的区别,我是用ubuntu 18.04。另外,本文基于VSCode官方插件的文档。
visual studio code 配置
首先VSCode需要安装微软官方C/C++插件,如下图所示的插件。
VSCode一个不太好的地方是由于要对各种语言的支持,每个项目都要有单独的各种配置文件,所以每个C项目都要配置一遍配置文件,这里主要配置两个文件launch.json和tasks.json,同时这两个文件应该在你项目文件夹的.vscode目录下:
配置launch.json文件
launch.json应该如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "/mnt/c/works/clearn/test.o",//编译完成的文件
"args": ["-fThreading"],
"stopAtEntry": false,
"cwd": "/mnt/c/works/clearn",//项目所在目录
"environment": [],
"externalConsole": true,
"internalConsoleOptions": "openOnSessionStart",//调试时跳转到内部调试台
"preLaunchTask": "build",//编译任务
"windows": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"pipeTransport": {
"pipeCwd": "",
"pipeProgram": "c:\\windows\\sysnative\\bash.exe",//通常不需要修改
"pipeArgs": ["-c"],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/mnt/c": "C:\\"//地址转换
}
}
]
}
这里详细说明一下,windows系统的各盘符是映射在linux子系统的/mnt目录下的,如C盘就映射为/mnt/c,所以上面涉及项目目录的都需要修改以符合你自身情况。有可能你会对pipeProgram不需要修改有疑问,WSL的启动文件不是在C:\Windows\System32目录下面吗?官方的解释是C/C++扩展本身是32位,所以需要特殊处理一下才能正常访问。
配置好launch.json文件,如果把其中的preLaunchTask去掉,其实你就已经可以用WSL的gdb调试文件了,只是在此之前你必须手动编译文件。因此才有了tasks.json文件,解决简单情况下的项目编译问题。
配置tasks.json文件
tasks.json如下所示:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "wsl gcc -g /mnt/c/works/clearn/test.c -o /mnt/c/works/clearn/test.o",
"problemMatcher": [],
}
]
}
注意这了label的名字应该和preLaunchTask所对应,这个配置文件的意义就是在调试前运行一条命令编译文件。这得益于WSL和windows命令行的互通,你完全可以在Powershell中执行绝大多数linux命令,只需在这之前加上wsl即可,而且这与你子系统的发行版无关。
现在两个文件都已经配置完毕,你已经可以正常使用VSCode在WSL环境下编写C语言程序了。正常运行、断点调试、单步运行这些都没有问题。
单步调试提示找不到文件
在使用单步调试时提示“无法打开...:找不到文件(file:///build/glibc-OTsEL5/glibc-2.27/...”这类提示时,你要做的就是补全glibc-2.27目录下的文件,没有这些文件就VSCode的C/C++插件就无法正常单步调试。你可以直接下载文件并解压到指定的目录,像我的就是在C:/build/glibc-OTsEL5目录。如果版本不对请到这里寻找对应版本。
最后
经过两天的折腾终于完成了从Linux迁移到windows的目标,不过对于我这种初学者,没有开发过大型C语言程序,感觉还有很多坑等着我。
vscode 日志文件_VSCode使用WSL环境开发C语言配置相关推荐
- spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)
目录 1.SpringBoot程序的打包与运行 程序打包 程序运行 SpringBoot程序打包失败处理 命令行启动常见问题及解决方案 SpringBoot项目快速启动(Linux版) 2.配置高级 ...
- 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
摘至:http://www.cnblogs.com/jacktu/archive/2007/12/05/984487.html 由于log4net默认情况下会独占日志文件,该文件不能被File.Ope ...
- vscode 导入文件_VScode中误报Unableto import'xxx'pylint(import-error)解决方案
VScode中误报Unable to import 'xxx' pylint(import-error)的解决方案 在vscode中进行同级目录调用模块时(在test_case/veryInfoUpl ...
- 使用ipad编译c文件 设置C编译环境 编写C语言代码
使用ipad编译.c/.cpp文件 目标机是ipad air3 第一种方式 使用带有ssh服务的IDE.我个人比较喜欢textastic AppStore 下载textastic.(有钱的直接付款,囊 ...
- Linux 上使用 Linux Shell 脚本自动化按天分割、压缩(延迟压缩)和定期清理日志文件...
2019-02-26 10:10:54 最近 Hgh这边有一个需求,需要对Linux服务器上的日志进行相应地自动化处理: 1) 定期清理:当分区的可使用空间超过一个预先设定好的阈值(如当分区的可使用空 ...
- Nginx日志文件的切割
Nginx日志文件的切割 生产环境中,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率. 同时,为了方便对日志进行分析和计算,需要对日志文件进行定时切割. 定时切割方式,包括按月切割.按天 ...
- db2 修改表空间自增长_db2表空间及日志文件调整
1.SQLState '57011' and errorCode '-964' 原因:数据库的日志文件已满 解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数可以 ...
- freecplus框架-日志文件操作
文章目录 一.源代码说明 二.日志文件的意义 三.CLogFile类 1.类的声明 2.示例程序 3.日志文件的切换 四.获取视频教程 五.版权声明 一.源代码说明 freecplus是一个Linux ...
- MySQL8.0安装与基于二进制日志文件位置的主从复制
一.MySQL8.0安装 安装环境: CentOS7.6 64位 关闭防火墙,禁用selinux 安装步骤: (1)下载MySQL8.0的repo源 cd /tmp wget https://dev. ...
- 要求输出事故报告,线上日志文件却不见了!!
目录 案例 排查 优化解决 案例 某天,可爱的产品经理跑过来对陈皮说,一个使用了好久,近期也未发过版的xx服务挂了!!需要赶紧处理下,并输出事故报告. 服务挂了,要尽快恢复,首先肯定使用重启大法.果不 ...
最新文章
- C#生成的图片无法在ps中打开
- Django死活不跳转的问题
- idea搭建可运行Servlet的Web项目[maven]
- 仿网易/QQ空间视频列表滚动连播炫酷效果
- 市场上常见电阻阻值表
- 谷歌地球 最新hosts_给我一个Google地球app,可以领略全球3D风情
- 图解快速排序(C++实现)
- C语言程序设计第六次作业
- HTML5的表单模版
- Stop Staring: Facial Modeling and Animation Done Right
- doodoo.js快速入门教程 1
- RetinaNet模型在DDSM数据集的应用问题(2)
- STM32F103ZET6如何驱动DS18B20温度传感器
- 关于interrupt(),interrupted(),isInterrupted()用法分析
- 空间前方交会(利用相机外方位元素和像点坐标进行解算)
- 服务器不正常断电关机导致sqlserver被标记为“可疑”
- node+layui红叶博客项目
- PYTHON:函数嵌套函数的用法
- galgame 游戏动画汉化(动画外挂字幕)和字幕合成方法
- 双馈风力发电机直接功率控制simulink Matlab模型 采用直接功率控制的矢量控制策略