[Util]-VSCode+WSL开发环境

文章目录

  • 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发行版本以代替(如Ubuntu):

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

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
      [Util]-VSCode+WSL开发环境_第1张图片

调试程序

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

启动

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

code .

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

调试

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

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

变量查看

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

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

format 释义
x hexadecimal
d signed decimal
u unsigned decimal
o octal
t binary ( t stands for two)
a address
c character
f floating number
s string
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 ::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的变量(多个时用空格分隔)
  • 通过disable display 可禁用变量显示
  • 通过enable display 可启用变量显示
x内存

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

x[/]

nfu三个参数都是可选的:

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

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

变量监控

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

watch

  • rwatch:只要出现读取目标变量的值的操作,程序就会停止;
  • awatch:只要出现读取目标变量或改变变量的操作,程序就会停止;

你可能感兴趣的:(C/C++,Linux,&,Shell,工具,vscode,ubuntu,linux,GDB)