使用VisualGDB在VS上编写Linux程序

作为一个cpper和Linuxer,经常在Linux上写代码,最近发现了VisualGDB(VS的插件)这个神器,从此也可以在Windows上直接写跑在Linux的程序了!调试起来更爽!

喜欢用Linux的原因除了好用的Shell和要写跑在Linux上的代码之外好像也没什么其他的原因(这不是废话么),虽然在Linux上撸代码也很爽(SublimeText或者Clion),但是单从IDE的角度来看Win下的VS还是无可匹敌的,宇宙最强IDE没有之一。

之前也想过能否直接在Win上开发Linux的程序呢,但是结果总是差强人意,体验不怎么好,Cygiwn太卡了,虚拟机的体验也不好(为了一个Linux的环境(SublimeText+Shell)还要另开一台虚拟机)。手头倒是有块树莓派,可以SSH上去撸码然后编译(只能是本地编辑了源文件然后扔上去之后再手动编译),但是就SSH工具来说和Linux的体验也差了很多(直接用SublimeText+Shell),虽然Win下的Xshell已经很好用了。

废话不多说,先来看一下VisualGDB的功能:

使用VisualGDB我们可以创建4种不同类型的项目:
00

我用得到的只有后两种Linux Project WizardMinGW/Cygwin Project Wizard这两种项目。

当我们选择Linux Project Wizard时,我们还需要一台可以SSH连接上的设备(虚拟机/VPS/树莓派等),因为我们创建的项目实际上是要在Linux的环境上执行的,不过我们可以在VisualStudio中调试/运行来控制在Linux跑的项目。

创建MinGW/Cygwin Project Wizard项目时我们需要在本地(Windows)上安装MinGW和Cygwin,是使用本地环境的MinGW和Cygwin来编译/执行的,这个先按下不表。

需要SSH连接的设备我使用的是树莓派,现在我觉得,树莓派真是代码的神器,有了它也不需要开虚拟机了,也可以在没有网络的环境下使用(连接VPS需要我们的电脑接入网络)。使用时只需要将电脑和树莓派处于同一个局域网下即可,简直是开盖即食(哈哈)。

关于树莓派设置的东西,有兴趣的可以看下我之前的这篇博文:将树莓派打造成便携的Linux编译环境

下面是多图来介绍在VS使用VisualGDB来创建并运行一个Linux项目:

01

选择我们需要创建的项目的具体类型和编译环境(建议C++11):

02

03

输入你可以SSH连接的设备信息:
04

输入设备信息之后会自动SHH连接到设备并创建我们的项目文件夹(在/tmp/VisualGDB目录下),生成的文件会在Linux设备重启时删除(意味着/tmp/VisualGDB项目会在重启后被删除),不过幸好我们的代码是存在本地的,只有编译执行时会将代码同步到Linux设备上,删除之后等我们再次编译/执行依然会同步到Linux设备上,这个没必要担心。

05

06

选择本地和远程主机的项目存储路径(建议默认就好):

07

项目创建成功之后会自动打开源文件(如果是empty需要你自己添加源文件),我们可以编译运行一下试试:

01

运行时也可以打开SSH console,相当于在VS中内置了一个SSH嘛,不过集成度很高,用起来很爽。

09

可以直接在VS中对Linux项目打断点并查看局部变量等各种信息:

010

在设置中我们也可以更改编译器(建议使用Clang,错误信息更友好):

011

012

Now,You can start coding!

另外,可以修改项目中的设置使用VS的代码提示:

项目-右键-visualGDB Project Properties

14

还有项目-右键-属性

15
将其中的包含目录中添加一个路径,为C:\Users\username\AppData\Local\VisualGDB\RemoteSourceCache\yourVPShost\0000\include,其中的username/yourVPShost根据你自己的情况修改,比如我需要包含的路径就是:

1
C:\Users\visionsmile\AppData\Local\VisualGDB\RemoteSourceCache\192.168.137.2\0000\include

另附一点关于VPS/虚拟机/树莓派的技巧

可以使用samba来与windows共享文件(方便传输代码,使用FTP还是太蛋疼,不能直接编辑FTP上的文件,只能下载到本地一份缓存然后修改之后再同步,很蛋疼)。

这个可以自己装:

1
sudo apt-get install samba

装完之后可以编辑你的samba配置来创建一个共享的文件夹:

1
sudo nano /etc/samba/smb.conf

下面是配置:

1
2
3
4
5
6
[Linux]
path = /home/pi
writeable = yes
read only = no
guest ok = yes
comment = Created by Raspberry

方括号中的Linux共享的文件夹的名字,在Windows上我们映射网络驱动器时显示的名字。Path是你要共享的路径,writeableread only表示共享的文件夹的读写权限,guest ok为yes表示允许匿名用户访问(不需要账户密码,当然也可以自己配置)。

修改完了之后保存,重启下samba服务:

1
sudo /etc/init.d/samba restart

然后我们就可以在Windows下映射网络驱动器连接到共享的文件夹了:

13

需要注意的是,如果你连接上之后只有读写权限没有写入权限,需要你SSH连接到该Linux设备上将共享的文件夹的权限修改为777(如我上面的配置是~/为共享文件夹):

1
2
3
cd /home/pi
#修改当前目录下所有文件及文件夹/子文件夹的权限为777
sudo chmod 777 * -R

然后reboot改设备即可。

Window下快速映射网络驱动器

通过samba我们可以创建一共享的文件夹来存储我们的代码/文件,但是每次都需要手动点映射网络驱动器也是太麻烦,而我又这么懒,所以我写了段批处理的代码,可以快速连接(前提是已经接入网络或者与设备处于同一局域网下):

1
2
3
4
5
6
7
8
9
10
@echo off
net use Z: \\RASPBERRYPI\Linux 2>NUL
if %errorlevel%==0 (
start Z:\
) else (
echo If you don't have connected.
echo Please SSH connect to your device.
echo If you have connected,Please ignore the message.
pause
)

根据自己的配置修改,保存为*.bat即可,在需要时执行即可映射到网络驱动器(我们共享的文件夹)。

全文完,若有不足之处请评论指正。
本文标题:使用VisualGDB在VS上编写Linux程序
文章作者:ZhaLiPeng
发布时间:2016年08月08日 00时53分
本文字数:本文一共有1.6k字
原始链接:https://imzlp.me/posts/9932/
许可协议: CC BY-NC-SA 4.0
转载请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!