用Visual Studio 2019连接 WSL来编译调试C/C++项目

因为有作业要在Linux环境下写,用虚拟机直接卡成PPT,VS code又不会调试,就搞一下VS 2019吧。

环境

windows 10 + WSL(Ubuntu 18.04.4) + Visual Studio Community 2019

  • Linux 里要有C/C++环境(gcc等)
  • VS要有 适用于 Linux 开发的 Visual C++产品,如果没有的话在 Visual Studio Installer 好像可以下载(我不知道)

SSH

VS连接远程系统依靠SSH,所以需要在WSL里和Windows下都需要下载SSH

Windows下安装SSH

以管理员方式打开powershell

  1. 安装ssh
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  1. 配置ssh
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. 
Get-NetFirewallRule -Name *ssh*
# There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
# If the firewall does not exist, create one
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

完了之后输入ssh
用Visual Studio 2019连接 WSL来编译调试C/C++项目_第1张图片
就好了。

Ubuntu安装ssh

  1. 安装ssh客户端和服务器
sudo apt-get install openssh-client
$ sudo apt-get install openssh-server
  1. 启动ssh服务器
sudo /etc/init.d/ssh start
  1. 执行ps -aux | grep ssh,如果有
    在这里插入图片描述
    类似的 sshd 就好了
  2. 默认情况下,ssh不允许远程使用root账户连接,可以修改配置文件,主要修改一下几项
# 允许使用root账号远程登录
PermitRootLogin yes
# 允许使用密码登录
PasswordAuthentication yes
  1. 重启SSH
service ssh restart

VS2019连接WSL

新建一个项目,右上角“平台”选linux, 下面项目选“控制台应用”,第一次新建Linux的项目后,运行那就会提示连接远程系统,也可以点 工具 -> 选项 -> 跨平台 -> 连接管理器 -> 添加添加一个远程连接
用Visual Studio 2019连接 WSL来编译调试C/C++项目_第2张图片
点连接之后,如果主机名那报错,说明SSH无法连接,可能是本地或Linux服务没打开,如果用户名或密码报错,可能原因有:

  1. 密码错了
  2. SSH客户端没权限连接,可以使用普通用户连接或按上面的在Linux里配置PermitRootLoginyes
  3. 端口占用,修改SSH服务端(Linux)配置文件中的Port字段,换一个端口

配置好之后的调试工具就有了
在这里插入图片描述

调试项目

运行时没有报错,但好像也没有任何输出,这是应为控制台窗口随着程序运行结束会很快消失,所以在最后return 0处打断点调试就可以了。
用Visual Studio 2019连接 WSL来编译调试C/C++项目_第3张图片
最后运行产生的文件包括.out等会保存在用户家目录下projects目录下,可以在项目 -> 属性 -> 远程生产根目录/项目目录处修改
用Visual Studio 2019连接 WSL来编译调试C/C++项目_第4张图片

你可能感兴趣的:(踩坑,linux,ssh,WSL,visual,studio)