以下示例使用VS2022 WSL2:Ubuntu22.04

一、VS以Linux环境调试Sln工程

1.安装远程调试所需软件包

  1. gdbserver和gdb用于远程调试;
  2. SSH协议族可以进行远程控制,openssh是其开源实现;
  3. build-essential软件包作用:提供编译程序必须软件包的列表信息,编译程序有了这个软件包,它才知道头文件和使用的库函数在哪里。
$ sudo apt update
$ sudo apt install -y build-essential
$ sudo apt install -y gdbserver
$ sudo apt install -y openssh-server
$ sudo apt install -y gdb

2.修改配置文件,开启密码验证

$ sudo nano /etc/ssh/sshd_config 将PasswordAuthentication之后的no改为yes

3.生成ssh keys 并且开启服务

$ sudo ssh-keygen -A
$ sudo service ssh start

4.VS安装Linux模块

在VS安装程序中勾选Linux模块在线安装即可

5.在VS中新建Linux工程,并设置目标Linux机器

vs2022连接docker vs2022连接linux_System

第一次创建Linux程序需要如下设置:
主机名:localhost 根据需要填写目标机器ip
端口:使用默认22 用户名:目标Linux用户名 身份验证类型:密码
密码:Linux用户密码

或者在调试 -> ***调试属性 -> 常规:远程生成计算机、远程根目录设置属性

vs2022连接docker vs2022连接linux_用户名_02

6.开始在VS中以Linux环境调试

二、使用VS以Linux环境调试CMake工程

1.配置Linux环境

  • 安装必要的包
$sudo apt update
$sudo apt install -y gcc 
$sudo apt install -y gdb 
$sudo apt install -y rsync 
$sudo apt install -y zip
$sudo apt install -y ninja-build 
$sudo apt install -y cmake 
$sudo apt install -y openssh-server
  • 修改配置文件,开启密码验证(前文有)
  • 生成ssh key并启动服务(前文有)

2.配置VS

vs2022连接docker vs2022连接linux_用户名_03

vs2022连接docker vs2022连接linux_bc_04

操作步骤

  • VS安装Linux模块并设置目标机器(前文有)
  • 选择配置好的目标机器(上面图1中的本地计算机改为配置的目标机器)
  • 设置Linux环境(下拉图1的x64-Debug点击管理配置,点击图2红框的加号,然后选择合适的环境)
  • 选择可执行文件即可调试

3.常见错误

xxx.so: file format not recognized; treating as linker script
xxx.so: syntax error
collect2 error ld returned 1 exit status

表示的错误是:xxx.so文件格式错误,可以使用$file xxx.so查看文件格式,一般情况下使用vs编译linux程序需要将Windows中的文件拷贝到Linux,就会导致文件格式转变,想解决该问题就得保证文件格式正确

找不到方法:“Void libcmake.CMakeParameters..ctor(System.String, System.String, libcmake.CMakeConfiguration)”。
找不到方法:“Void libcmake.CMakeParameters..ctor(System.String, System.String, libcmake.CMakeConfiguration)”。
...
引发异常的上一位置中堆栈跟踪的末尾

更新一下VS应该可以解决该问题