[Util]-VSCode+WSL开发环境

2023-05-16

文章目录

  • WSL
    • 升级到WSL2
    • 安装编译环境
    • 相关命令
  • VSCode
    • 快捷键
      • 书签
      • 代码折叠
    • 配置文件
      • C++格式化
    • 远程linux
  • 调试程序
    • 启动
    • 调试
      • 变量查看
        • print打印
        • display追踪
        • x内存
      • 变量监控

VSCode是非常流行的代码编辑器,与WSL配合可方便地进行Linux下开发与测试。

WSL

WSL会自动加载本地文件系统到/mnt目录下(如D盘下的wsl目录会映射到/mnt/d/wsl)。

关闭wsl:wsl --shutdown

升级到WSL2

在Win10下先开启wsl功能,默认是WSL1。要升级到WSL2,需要先启用组件,以管理方式启动Powershell:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

执行完成后,根据提示重启系统。

从https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi获取WSL2 Linux内核更新包并运行。

启动Powershell:

  • 查看wsl当前版本:wsl -l -v
  • 更新:wsl --set-version Ubuntu 2
  • 若首次安装(还未安装Linux系统),可设定默认版本:wsl --set-default-version 2

安装编译环境

安装完系统(Ubuntu)后,需要安装编译工具链:

sudo apt update # 更新软件包
sudo apt install build-essential #安装build-essential软件包
sudo apt install gdb # 
sudo apt install cmake

相关命令

wsl相关命令以及安装的系统(以Ubuntu为例)可以直接通过Powershell运行。

设置Ubuntu的默认登录用户(WSL默认已安装时输入的用户登录,可以改为root):

ubuntu config --default-user root

安装的linux发行版本以<distribution name>代替(如Ubuntu):

  • 查看状态:wsl --status
  • 停止wsl:wsl --shutdown,可释放占用的资源;
  • 列出安装版本:wsl --list --verbose/wsl -l -v
  • 安装:wsl --install [--distribution <Distribution Name>],不指定发行版本时,安装默认版本;
  • 运行指定版本:wsl --distribution <Distribution Name> --user <User Name>
  • 卸载指定版本:wsl --unregister <Distribution Name>

VSCode

从https://code.visualstudio.com/download处下载VSCode安装包,直接安装即可。安装完成后根据需要安装相应插件。

快捷键

Ctrl + ` 打开或关闭终端

常用快捷键

  • 格式化代码:Alt + Shift + F
  • 单行注释: Ctrl + /
  • 多行注释:Shift + Alt + A/* */
  • 跳到指定行: Ctrl + G,然后输入行号
  • 查找文件: Ctrl + Shift + F

行操作:

  • 剪切当前行: Ctrl + X
  • 插入一行:Ctrl + Enter(无论光标在何位置,插入一行并设光标到新行行首)下方插入;Ctrl + Shift + Enter上方插入;
  • 复制一行:Alt + Shift + ↓下方;Alt + Shift + ↑上方;
  • 移动一行:Alt + ↓下方;Alt + ↑上方;

词操作:

  • 选中一个词:Ctrl + D

搜索替换:

  • 查找:Ctrl + F
  • 替换:Ctrl + H
  • 项目内查找:Ctrl + Shift + F

书签

要使用书签功能,需要先安装Bookmarks插件:

  • 创建或取消:Ctrl + Alt + K
  • 下一个书签:Ctrl + Alt + L
  • 上一个书签:Ctrl + Alt + J

列出所有书签:Ctrl + Shift + P打开控制面板,然后输入bookmarks,选择对应命令即可。

代码折叠

代码折叠都是通过组合键实现的:

  • 折叠代码:先Ctrl + K,再Ctrl + 0(数字0);
  • 展开折叠:先Ctrl + K,再Ctrl + J
  • 切换折叠状态:先Ctrl + K,再Ctrl + L

配置文件

Ctrl+Shift+P,选择C/Cpp: Edit configurations...生成c_cpp_properties.json,在配置文件中的includePath下添加所需头文件路径。

Ctrl+Shift+P,选择Tasks: Configure Tasks…,选择Create tasks.json file from templates,创建程序构建文件tasks.json。

C++格式化

通过Alt + Shift + F可方便地格式化,但默认总是括号换行;

在.vscode/setting.json(文件–首选项–设置,或者左下角齿轮–设置;搜索format ,在‘扩展c/c++’中设定‘C_Cpp: clang_format_style’;)中添加

"C_Cpp.clang_format_fallbackStyle": "{BasedOnStyle: Chromium, IndentWidth: 4, ColumnLimit: 160}"

远程linux

远程连接步骤

  • 在VSCode扩展中,搜索安装Remote Development
  • 在Linux中安装SSH
  • 在VSCode中点击左下角‘打开远程’图标(如下图所示,或者按ctrl+shift+p,输入‘ssh’),在弹出的下拉列表中:
    • 选择’connect current window to Host’连接到远端机器;
    • 选择’Open SSH Configuration File…'配置远程连接文件:$USER$/.ssh/config
      在这里插入图片描述

调试程序

为能调试wsl程序,需要先安装插件Remote - WSL

启动

先进入wsl,然后到程序所在目录,执行:

code .

会打开外部系统的VSCode,(写一个简单hello word程序)根据提示安装所需插件。

调试

创建launch.json文件:选择C++(GDB/LLDB)环境,然后g++ - 生成和调试活动文件,自动完成创建。

设置断点,按F5即可启动调试,在调试控制台可查看调试信息以及执行调试命令。通过-exec <command><command>为GDB指令)即可执行GDB命令(GDB使用可参见《GDB 调试指南》)。

变量查看

GDB有两种常用变量查看方法print(简写p)与display;display方式查看时,每次暂停时都会显示对应变量值。

显示时,都可通过fmt设定内容输出方式:

format释义
xhexadecimal
dsigned decimal
uunsigned decimal
ooctal
tbinary ( t stands for two)
aaddress
ccharacter
ffloating number
sstring

print打印

print完整语法:print [options] [/fmt] expr(可简写为p):

  • options为选项,控制表达式内容或值(通过on或off开启与关闭);
  • fmt:输出格式;
  • expr:查看的变量或表达式(&expr取地址,*expr取指针值)
options说明
-address查看指针变量时,是否同时打印其内存地址,默认值为 on。
等价于单独执行 set print address on|off 命令。
-array是否以便于阅读的格式输出数组中的元素,默认值为 off。
等价于单独执行 set printf array on|off 命令。
-array-indexes对于非字符类型数组,输出每个元素值的时,是否同时显示对应的数组下标,默认值为 off。
等价于单独执行 set print array-indexes on|off 命令。
-pretty以便于阅读的格式打印结构体变量的值,默认值为 off。
等价于单独执行 set print pretty on|off 命令。

print打印变量与表达式值时,还支持@::运算符:

  • @:输出数组中指定长度的元素,如p/x *ary@3以十六进制输出前三个元素,p/c ary[2]@2以字符形式输出数组的下标2、3元素;
  • :::用于指定变量所属作用域(多个同名变量时),p ['file']::var输出文件file中的var(文件名要用引号括起,省略文件名输出全局变量),p <fun>::var输出函数fun中的var;

display追踪

display 追踪变量值,每当程序暂停执行(例如单步执行)时,GDB 调试器都会自动再次打印变量的值,而 print 命令则不会。

display[/fmt] expr

通过info display可查看所有要显示变量列表:

Auto-display expressions now in effect:
Num Enb Expression
1:   y  /x count
2:   y  /x count
3:   y  /c count
  • 通过undisplay <Nums>可删除编号为Nums的变量(多个时用空格分隔)
  • 通过disable display <Nums>可禁用变量显示
  • 通过enable display <Nums>可启用变量显示

x内存

使用examine命令(简写是x)来查看内存地址中的值:

x[/<nfu>] <addr>

nfu三个参数都是可选的:

  • n:正整数,表示要显示内存的长度(后面单元的数量)
  • f:显示方式,见前面fmt格式;
  • u:地址单元
    • b:单字节
    • h:双字节
    • w:四字节
    • g:八字节

x/2xw ary:以十六进制方式显示2个四字节内存(共8个byte);

变量监控

通过watch可监视变量或表达式:

watch <expr>

  • rwatch:只要出现读取目标变量的值的操作,程序就会停止;
  • awatch:只要出现读取目标变量或改变变量的操作,程序就会停止;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Util]-VSCode+WSL开发环境 的相关文章

  • 虚拟服务器集群新建linux虚拟机模板操作步骤

    本文以新linux系统Ubuntu22 04为例 第一步 xff1a 上传镜像 第二步 xff1a 创建虚拟机 第三步 xff1a 安装操作系统 第四步 xff1a 将虚拟机转换成模板 第五步 xff1a 用模板创建虚拟机 第一步 xff1
  • 虚拟机安装教程 VMware Workstation 16 Pro

    VMware虚拟机能干什么 xff1f 它可以使你在一台机器上同时运行两个及以上的Windows LINUX系统 系统切换真正的秒切 xff01 你可以用虚拟机来进行各种测试或实验而不会影响到你的物理实体机 xff0c 极其方便 xff0c
  • Raspberry PI 外壳 铝合金支持Raspberry PI 3B+ & PoE HAT

    HOTe RPA 铝合金外壳 完美搭配最新的Raspberry PI 3B 43 amp PoE HAT en 题外话 最近 xff0c 随着3D软件的应用越来越熟练 xff0c 对于电子外壳的设计也越来越得心应手 最近的几个项目设计 xf
  • 有符号整数的移位操作(按其补码移位规则进行操作)

    知识点 算法运行时 xff0c 输入的整数 默认 情况下被计算机系统表示为 有符号整数 有符号整数的二进制表示中 xff0c 最高位为符号位 xff08 正整数为0 xff0c 负整数为1 xff09 xff0c 这也是有符号整数名称的由来
  • 判断是否为回文字符串 ← 栈

    问题描述 所谓 回文字符串 就是指正读反读均相同的字符序列 如 123a321 和 aba 均是回文 xff0c 但 abc 不是回文 通过 栈 这个数据结构我们将很容易判断一个字符串是否为回文 算法代码 include lt bits s
  • 判断N 数码是否有解 牛人总结 归并排序

    作者 力的博客 先介绍八数码问题 xff1a 我们首先从经典的八数码问题入手 xff0c 即对于八数码问题的任意一个排列是否有解 xff1f 有解的条件是什么 xff1f 我在网上搜了半天 xff0c 找到一个十分简洁的结论 八数码问题原始
  • Web服务器HTTP头信息公开 漏洞

    远程Web服务器通过HTTP标头公开信息 远程Web服务器发送的HTTP标头公开了可以帮助攻击者的信息 xff0c 例如Web服务器使用的服务器版本和语言 解决办法 修改Web服务器的HTTP头以不公开关于底层Web服务器的详细信息 服务器
  • Debian10 更换软件源 & 配置中文环境 & 安装中文输入法

    说明 xff1a 看了一下 xff0c 距离发布上篇文章都快半年了 x1f926 很抱歉这段时间由于各 wo 种 de 原 lan 因 duo 迟迟没有更文 xff0c 实际上我有不少东西准备和大家分享的 目前研一上学期已经结束 xff0c
  • Sublime Text 下载-设置切换中文版

    官方下载地址 xff1a Download Sublime Text Sublime Text设置中文版 1 打开Sublime Text xff0c 快捷键 Shift 43 Ctrl 43 P xff0c 输入 xff1a instal
  • Sublime Text 编译 GBK文件编码

    Shift 43 Ctrl 43 P xff0c 输入 xff1a install 选择 Package Control Install Package xff0c 选择后会自动安装 然后输入 Convert xff0c 选择Convert
  • 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)

    数据库SQL Server 2008 R2 xff0c 网站突然登不了了 重启iis xff0c 重启数据库服务 xff0c 重启服务器都不行 解决方法 xff1a 打开SQL Server配置管理器 xff0c 找到MSSQLSERVER
  • Math.floor(Math.random()*3+1)

    Math random 获取0 1随机数 Math floor method rounds a number DOWNWARDS to the nearest integer and returns the result 小于等于 x xf
  • 定时打开或关闭服务器上的软件

    部署在服务器上的软件 xff0c 会莫名其妙的停止运行 xff0c 还必须得手动关闭重启 xff0c 太麻烦啦 xff01 在大神的建议下 xff0c 做一个让软件自动关闭进程 xff0c 然后重启的操作 废话少说 xff0c 上车 第一步
  • FFmpeg

    FFmpeg是一套可以用来记录 转换数字音频 视频 xff0c 并能将其转化为流的开源计算机程序 采用LGPL或GPL许可证 它提供了录制 转换以及流化音视频的完整解决方案 它包含了非常先进的音频 视频编解码库libavcodec xff0
  • 不懂PO 设计模式?这篇实战文带你 PO

    为UI页面写测试用例时 xff08 比如web页面 xff0c 移动端页面 xff09 xff0c 测试用例会存在大量元素和操作细节 当UI变化时 xff0c 测试用例也要跟着变化 xff0c PageObject 很好的解决了这个问题 x
  • archlinux 中文本地化配置

    参考 xff1a http www wiki org 本地化配置 xff0c 其实就是设置locale 一 显示中文 要显示中文 xff0c 需要生成中文语言包和安装中文字体 1 生成中文语言包 archlinux使用locale gen脚
  • 【Ubuntu】安装Go语言

    sudo apt install golang go version
  • linux系统中使用X11 获取系统窗体信息

    在X Window System中 xff0c 每个窗口都有一个唯一的标识符 xff0c 称为窗口ID 要查找特定窗口的ID号 xff0c 可以使用Xlib库中的XQueryTree函数来获取窗口树结构 xff0c 并遍历整个树结构以查找目
  • 三维重建:多点透视cvSolvePNP的替代函数(Code)

    xfeff xfeff 在调试JNI程序时 xff0c 所有的Shell都已经加载完成 xff0c 而唯一真正核心的cv SolvePnP却不能在JNI里面获得通行证 xff0c 经过反复测试都不能运行 xff0c 因此只能忍痛舍弃 xff
  • 利用Pycharm工具将Python+Qt项目打包成exe应用程序

    博客小白第一次发博客 xff0c 已参加工作 xff0c 仅用于记录一下自己空余时间学习Python的进程 xff0c 学习过程中遇到问题也借鉴了很多博客的解决办法 xff0c 因此也想记录下自己的遇到的问题 xff0c 希望对跟我一样刚起

随机推荐

  • BOSS 业务运营支撑系统

    今天又简单的介绍几个概念 xff0c 我觉得要深入了解某个技术 xff0c 首先要把概念搞清楚 xff0c 这样在宏观理解上将更加深入 本人工作所属电信行业 xff0c 所以下面所介绍的几个概念都是基于电信行业的 BSS Business
  • JAVA版本:判断101-200之间有多少个素数,并输出所有素数。

    题目 xff1a 判断101 200之间有多少个素数 xff0c 并输出所有素数 程序分析 xff1a 判断素数的方法 xff1a 用一个数分别去除2到这个数 xff0c 如果至少有一个数能被整除 xff0c 则表明此数不是素数 xff0c
  • arm64架构ubuntu18.04国内镜像源

    jetson xavier nx下换国内源 xff0c 步骤如下 xff1a span class token shebang important bin bash span span class token function cp spa
  • 安装和配置OpenStack客户端(Jesse翻译)

    xfeff xfeff 安装和配置 OpenStack 客户端 xff08 Jesse 翻译 xff09 原文来自 icehouse的OpenStack文档 回忆 xff1a 在前面部分 xff0c 你已经使用了 keystone 客户端
  • 联通家庭宽带光猫DDNS设置

    1 目前家里宽带光猫ppoe拨号获取的IP全部都是非公网IP 打96169宽带专家转人工客服申请更换公网IP 一天内会有专人联系 更换成公网IP后 重启光猫 在公司或者其他地方ping下家里光猫获取到的公网IP看下是否能ping通 2 申请
  • Matlab如何抓取excell表格里的指定数据

    每次从示波器上采集的数据总是会带有示波器的相关信息 xff0c 没法直接load到matlab里 xff0c 每次手动删除让人感到疲惫 xff0c 特别是数据量达到100 43 的时候 瞬间emmm 示波器采到的数据如下图 xff1a 于是
  • nginx更改进程名称 学习笔记

    如何更改进程名称 在进入正题之前 xff0c 我们需要了解一下以下参数的作用 xff1a span class token keyword int span span class token function main span span
  • Apache 2部署SSL证书

    在Ubuntu系统Apache 2部署SSL证书 本文介绍了如何在Ubuntu系统以及Apache 2中安装阿里云SSL证书 前提条件 已从SSL证书控制台下载Apache服务器证书 已安装Open SSL 环境准备 操作系统 xff1a
  • NVDIA Jetson TX2软件介绍

    介绍 JETSON TX2 模块 它是一台基于 NVIDIA Pascal 架构的 AI 单模块超级计算机 它性能强大 xff0c 但外形小巧 xff0c 节能高效 xff0c 非常适合机器人 无人机 智能摄像机和便携医疗设备等智能终端设备
  • 12.6V/8.4V锂离子或锂聚合物电池充电器

    AL1261是一款专门为高精度的线性锂电池充电器而设计的电路 xff0c 非常适合那些低成本 便携式的充电器使用 它集高精度预充电 恒定电流充电 恒定电压充电 电池状态检测 充电结束低泄漏 充电状态指示等性能于一身 xff0c 可以广泛地使
  • import requests ModuleNotFoundError: No module named 'requests'

    错误描述 xff1a import requests ModuleNotFoundError No module named 39 requests 39 解决办法 xff1a Step 1 xff1a 打开命令窗口 xff0c Win 4
  • UITableViewController

    UITableViewController 表视图控制器 UITableViewController继承自UIViewController 自带了一个tableView 其根视图就是tableView 创建UIViewVontroller运
  • stm32开发板点亮led遇到问题

    最近由于毕业设计是四旋翼无人飞行器的系统设计 xff0c 在学STM32F103R8 xff0c 学长自己设计的一块板子 xff0c 让我根据野火的教程一步一步做 xff0c 先熟悉一下板子的工作原理 xff0c 为以后编程控制电机转速做准
  • Debian Linux 的安装

    Debian Linux 的安装 作者 xff1a Grey 原文地址 xff1a 博客园 xff1a Debian Linux 的安装 CSDN xff1a Debian Linux 的安装 说明 本安装说明是基于 Windows 10
  • 基于pytest设计自动化测试框架实战

    简介 基于pytest实现测试用例收集方案 自定义参数化方案 页面元素定位数据存储方案 测试用例数据存储和维护方案 xff0c 这样可直接进入到设计编写测试用例业务代码阶段 xff0c 避免重复设计这些方案以及方案不统一导致维护复杂 困难的
  • windows安全模型--令牌(token)和安全描述符

    当一个程序访问一个资源时 xff0c 需要有相应的访问权限 windwos安全模型中 xff0c 有两个角色 xff0c 一个就是访问者 xff08 进程 xff09 xff0c 一个是被访问者 xff08 资源 xff09 资源 xff0
  • firefox查找插件和插件媒体类型的方法

    firefox从两个位置加载插件 xff0c 并查找插件对应的媒体类型 xff08 mimetype xff09 1 安装目录的plugins文件夹下 可以直接把一个插件的dll放到plugins目录下 xff0c 该插件对应的媒体类型 x
  • Windows内存机制的问与答

    学习windows内存管理过程中 xff0c 会先有些疑问 xff0c 然后在不断学习中得到解答 xff0c 解答也是基于我的不断理解 xff0c 未必完全正确 下面记录一些 一 如果一个内存页没有被修改过 xff0c 操作系统可以直接释放
  • Python中if语句的使用方法

    if语句用来表示某种可能的情况 xff0c 并如何处理该情况 if语句可以用来表示一种可能性 两种可能性或者多种可能性 1 一种可能性 单个的if语句表示一种可能性 xff0c if关键字后面跟着表达式 xff0c 当表达式是True时 x
  • [Util]-VSCode+WSL开发环境

    文章目录 WSL升级到WSL2安装编译环境相关命令 VSCode快捷键书签代码折叠 配置文件C 43 43 格式化 远程linux 调试程序启动调试变量查看print打印display追踪x内存 变量监控 VSCode是非常流行的代码编辑器