![abdd2d033456ad868f2ae8f8e98c40c6.png](https://i-blog.csdnimg.cn/blog_migrate/39677b56f24af7d6a503059362156210.jpeg)
使用VSCode新推出的Remote功能来连接WSL或服务器进行开发. 可以在Windows上享受优秀的界面体验的同时使用Linux环境进行开发(还是要感谢无数的VSCode插件贡献者).
环境基础配置
- Visual Studio Code最新版本
注意点:
- 安装时需要勾选环境变量添加到
path
- 在插件中心安装
Remote-WSL
、Remote-SSH
、Remote Development
基础插件;
- WSL环境
注意点:
- 推荐使用
Ubuntu 18
, 其他没试过; - 安装成功之后进行初始化相关工作, 配置密码之类的;
使用WSL打开VSCode
- 打开WSL terminal(打开Power shell输入wsl/bash, 或者直接搜索Ubuntu打开);
- 找个想要打开的项目, 注意WSL和Win的目录结构不同, Windows的C盘在
/mnt/c
下面, 可以先切到工作目录; - 在命令行里敲
code .
, 第一次使用时, 会看到VS Code的组件被提示需要安装, 稍等一会儿, 这种情况只有首次使用会出现, 之后就可以直接使用code 文件夹
的方式使用VS Code打开, 并且是以Linux环境的模式Note: 如果code
这个命令无效的话, 需要在VS Code安装时把path添加到环境变量里去, 或者后期手动自己加. - 之后就可以看到VSCode的窗口出现了, 可以在下方看到VSCode正在以WSL方式打开文件夹的通知;
- 一旦完成之后, 下次可以直接在历史文件夹里打开项目, 或者从命令行里打开新项目, 以及VS Code里打开;
最近项目
:
![4a7ab38688f0ef4830e893a97d7ad089.png](https://i-blog.csdnimg.cn/blog_migrate/d8f8bb7dc1aa4b862ec8a9bbc86874e7.jpeg)
VSCode Ctrl + O打开
:
![87538718116f8b1073573f58ec986cd1.png](https://i-blog.csdnimg.cn/blog_migrate/409d6ec89ec93d66735be1123930c52c.jpeg)
命令行打开
:
![21f20ba6026ff7e54f8839cad679f30f.png](https://i-blog.csdnimg.cn/blog_migrate/77718ec29d879dc52359dad540df7099.jpeg)
开发配置实例一 C语言
使用WSL开发调试C语言的配置, 可以实现开发调试, 代码检查, 智能提示等功能, 并且调试的变量参数可以自定义, 能够更好的理解开发调试的过程.
基础环境要求
前提要求是WSL中安装了gcc(使用 sudo apt update和 sudo apt install gcc命令来安装, 以及在VSCode中安装C/C++开发插件.
![71e942d0be4942dcec45e6a3cf0ec1ed.png](https://i-blog.csdnimg.cn/blog_migrate/b4f9ab4b306b9aa9a060c3ba74c5e266.jpeg)
![c552bd44e21c52ae49b0fdb28a0c4c47.png](https://i-blog.csdnimg.cn/blog_migrate/6e664cb9cd775a6407d4ebc1094b17bb.jpeg)
建立基础文件
main.c
:
#include <stdlib.h>
#include <stdio.h>
// 头文件, 其中add函数和sub函数的定义在其中
#include "func1.h"
#include "func2.h"
int main(int argc, char const *argv[])
{
int a = 10, b = 20;
// 调用其他文件内定义的函数
printf("a add b = %dn", add(a, b));
printf("a sub b = %dn", sub(a, b));
printf("hello worldn");
return 0;
}
依赖的头文件func1和func2函数文件
:
// func1.h: 函数定义
extern int sub(int a, int b);
// func1.c: 函数实现
#include "func1.h"
int sub(int a, int b)
{
return a - b;
}
// func2.h:
extern int add(int a, int b);
// func2.c:
#include "func2.h"
int add(int a, int b)
{
return a + b;
}
![a1f53b656a19cd80bd5da15a69908c92.png](https://i-blog.csdnimg.cn/blog_migrate/b28776b9e37545f1009369d98b12a5c9.jpeg)
添加调试配置
记得先打开main.c文件, 看下底边栏的信息, 确认是否被自动识别为C文件, 这一步很重要, 否则后面创建的配置会出问题(毕竟是编辑器, 不是IDE, 配置略微繁琐了些)
![6beb0bc1533a6f514776904f36a6a4bc.png](https://i-blog.csdnimg.cn/blog_migrate/df1f85d70a0c8b16f8188b943a8d4b3b.jpeg)
在Debug栏下创建launch.json
文件:
![625caf95c7666f9ba17681a8b5b352d8.png](https://i-blog.csdnimg.cn/blog_migrate/adfc059ecc552e50f40e435b225926db.jpeg)
接下来选择配置
![2adf8a5a9a4335674ed8eaa1f52a0820.png](https://i-blog.csdnimg.cn/blog_migrate/d758952e5eb3fcb3c09e288f26c1d8bd.jpeg)
选择第二个gcc(因为我们只装了gcc )
![b6108628c2db2d30053d51674a86cedb.png](https://i-blog.csdnimg.cn/blog_migrate/dd4bceca81230d3d95f571200a815169.jpeg)
可以看到目录中多了个.vscode
文件夹, 文件夹下有launch.json
文件, 这是VSCode的项目配置信息文件夹, 包含项目的配置和命令信息.
![d75c9c3b865a3c9ea43fcbb4efd881a2.png](https://i-blog.csdnimg.cn/blog_migrate/f2955da73ab004a6d1d62c5d8a2bbc65.jpeg)
开始调试
打开main文件, 添加断点
![0a3d3d8af04faabdae30d2e134b41e73.png](https://i-blog.csdnimg.cn/blog_migrate/eb1da25079bcbf18ff50ef2768f3bb1e.jpeg)
按下微软的经典调试按钮F5
![e328363f51235b43cc71ffb710ff5294.png](https://i-blog.csdnimg.cn/blog_migrate/7aaa329f0f9035a6fe9de54ee943929e.jpeg)
报错了, 提示有未定义的引用add和sub, 原因是这俩函数的实现不在main.c中, 默认的编辑命令在task.json
中只编译了main.c
![8127764845e8368a0a0528591b2dea7a.png](https://i-blog.csdnimg.cn/blog_migrate/8d3ef373d523c3773c77d5f7882421be.jpeg)
修改为所有的.c文件, 正则匹配
![8e86925d94da36b8dcb4b2958947a9cf.png](https://i-blog.csdnimg.cn/blog_migrate/3eaae18a8fedcaf070c22cd9e2b72b14.jpeg)
接下来F5, 单步调试, 变量等等
![adddefef063566dc20c5b319408e4f36.png](https://i-blog.csdnimg.cn/blog_migrate/436f67548c8a54c39a52b11ab5320714.jpeg)
命令行执行结果
![73939e4b7f7a5e9e62cbf856fbbac5c7.png](https://i-blog.csdnimg.cn/blog_migrate/6664dcb5a52f15dfc1caeceff687ad7e.jpeg)