使用VS调试Linux程序
以下示例使用VS2022 WSL2:Ubuntu22.04
一、VS以Linux环境调试Sln工程
1.安装远程调试所需软件包
- gdbserver和gdb用于远程调试;
- SSH协议族可以进行远程控制,openssh是其开源实现;
- 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机器
第一次创建Linux程序需要如下设置:
主机名:localhost
根据需要填写目标机器ip
端口:使用默认22
用户名:目标Linux用户名
身份验证类型:密码
密码:Linux用户密码
或者在调试
-> ***调试属性
-> 常规:远程生成计算机、远程根目录
设置属性
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
操作步骤
-
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应该可以解决该问题