在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语言配置相关推荐

  1. spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)

    目录 1.SpringBoot程序的打包与运行 程序打包 程序运行 SpringBoot程序打包失败处理 命令行启动常见问题及解决方案 SpringBoot项目快速启动(Linux版) 2.配置高级 ...

  2. 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)

    摘至:http://www.cnblogs.com/jacktu/archive/2007/12/05/984487.html 由于log4net默认情况下会独占日志文件,该文件不能被File.Ope ...

  3. vscode 导入文件_VScode中误报Unableto import'xxx'pylint(import-error)解决方案

    VScode中误报Unable to import 'xxx' pylint(import-error)的解决方案 在vscode中进行同级目录调用模块时(在test_case/veryInfoUpl ...

  4. 使用ipad编译c文件 设置C编译环境 编写C语言代码

    使用ipad编译.c/.cpp文件 目标机是ipad air3 第一种方式 使用带有ssh服务的IDE.我个人比较喜欢textastic AppStore 下载textastic.(有钱的直接付款,囊 ...

  5. Linux 上使用 Linux Shell 脚本自动化按天分割、压缩(延迟压缩)和定期清理日志文件...

    2019-02-26 10:10:54 最近 Hgh这边有一个需求,需要对Linux服务器上的日志进行相应地自动化处理: 1) 定期清理:当分区的可使用空间超过一个预先设定好的阈值(如当分区的可使用空 ...

  6. Nginx日志文件的切割

    Nginx日志文件的切割 生产环境中,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率. 同时,为了方便对日志进行分析和计算,需要对日志文件进行定时切割. 定时切割方式,包括按月切割.按天 ...

  7. db2 修改表空间自增长_db2表空间及日志文件调整

    1.SQLState '57011' and errorCode '-964' 原因:数据库的日志文件已满 解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数可以 ...

  8. freecplus框架-日志文件操作

    文章目录 一.源代码说明 二.日志文件的意义 三.CLogFile类 1.类的声明 2.示例程序 3.日志文件的切换 四.获取视频教程 五.版权声明 一.源代码说明 freecplus是一个Linux ...

  9. MySQL8.0安装与基于二进制日志文件位置的主从复制

    一.MySQL8.0安装 安装环境: CentOS7.6 64位 关闭防火墙,禁用selinux 安装步骤: (1)下载MySQL8.0的repo源 cd /tmp wget https://dev. ...

  10. 要求输出事故报告,线上日志文件却不见了!!

    目录 案例 排查 优化解决 案例 某天,可爱的产品经理跑过来对陈皮说,一个使用了好久,近期也未发过版的xx服务挂了!!需要赶紧处理下,并输出事故报告. 服务挂了,要尽快恢复,首先肯定使用重启大法.果不 ...

最新文章

  1. C#生成的图片无法在ps中打开
  2. Django死活不跳转的问题
  3. idea搭建可运行Servlet的Web项目[maven]
  4. 仿网易/QQ空间视频列表滚动连播炫酷效果
  5. 市场上常见电阻阻值表
  6. 谷歌地球 最新hosts_给我一个Google地球app,可以领略全球3D风情
  7. 图解快速排序(C++实现)
  8. C语言程序设计第六次作业
  9. HTML5的表单模版
  10. Stop Staring: Facial Modeling and Animation Done Right
  11. doodoo.js快速入门教程 1
  12. RetinaNet模型在DDSM数据集的应用问题(2)
  13. STM32F103ZET6如何驱动DS18B20温度传感器
  14. 关于interrupt(),interrupted(),isInterrupted()用法分析
  15. 空间前方交会(利用相机外方位元素和像点坐标进行解算)
  16. 服务器不正常断电关机导致sqlserver被标记为“可疑”
  17. node+layui红叶博客项目
  18. PYTHON:函数嵌套函数的用法
  19. galgame 游戏动画汉化(动画外挂字幕)和字幕合成方法
  20. 双馈风力发电机直接功率控制simulink Matlab模型 采用直接功率控制的矢量控制策略

热门文章

  1. python算法——冒泡排序
  2. 持久化存储与HTTP缓存
  3. Spring配置中bean的id和name属性的区别
  4. 帮同学的忙,随意写了个课程设计(关于循环双向列表)
  5. 基于各系统平台(RedHat Linux、SUSE Linux、CentOS、SUN Solaris10) FTP服务的配
  6. 【转】ASP.net2。0中解决无法获取 GridView 隐藏列值问题
  7. php 如何下载,php的包怎么下载
  8. Mysql之数据库与sql
  9. 最全计算机基础知识竞赛试题及答案,计算机基础知识竞赛试题.doc
  10. tushare pro积分规则