VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。
本文介绍如何使用VS和VisualGDB开发这样的项目:用VisualGDB CMake Project System来开发驻留在Linux机器上的项目。
常规的VisualGDB项目,有的需要从Windows端下载源文件和头文件,有的需要使用难以维护的共享文件夹。而直接访问的项目使得VS能够直接编辑Linux机器上的文件,保证你总是使用文件的最新版本。
进行如下步骤之前,确保安装VisualGDB5.3或更新版本。
1 打开VisualGDB Linux项目向导
启动VS,打开VisualGDB Linux Project向导:

2 创建基于CMake项目
只有基于CMake的项目,VisualGDB才能使用SSH直接访问。选择”Create a new Project”->”Use CMake”,并勾选”Use the advanced CMake Project Subsystem”复选框:

3 选择Linux机器
在下一页选择你的Linux机器:

4 配置源码访问
在子页面”Source code access”,选择”Access the sources directly over SSH”,并点击”Finish”来创建项目:

5 构建项目
通过”Ctrl-Shift-B”来build该项目:

6 调试项目
放置断点,并按F5开始调试项目:

7 查看项目的Windows文件夹
检查项目的Windows文件夹,发现该文件夹下既不包含源码文件,也不包含构建的二进制文件,只是包含solution文件、VisualGDB项目文件以及IntelliSense缓存:

8 VS里观察远程文件
在VS里,将鼠标悬在源文件tab上,可以看到,对于远程项目,路径是”vgdbssh://”这样的语法模式。

9 打开终端
在Solution Explorer中,在target上右键,然后选择”Open Terminal Here”:

10 安装”zlib”库
下面在Linux机器上安装”zlib”库,并展示VisualGDB如何自动识别它。在SSH Console里运行” sudo apt-get install zlib1g-dev”:

11 调用zlib中的函数
一旦zlib安装成功后,源文件中包含<zlib.h>头文件。观察IntelliSense如何即时提示,而不需要同步任何目录:

在源码中调用函数zlibVersion(),可以看到,由于缺少被调用函数的定义,链接(link)会失败:

打开主程序target的属性页,在”Linked Libraries field”中添加”z”:

对目标进行调试,确保函数正确调用:

12 VisualGDB自动编辑CMakeLists文件
观察一下VisualGDB如何在CMakeLists.txt文件中编辑target_link_libraries()声明:

13 添加新的源文件
通过”Add”->”New Item”来添加一个新的源文件,也可以remove该文件(选择”Remove”,而不是”Delete”,使得文件继续保留在磁盘上)。然后保存项目:

14 添加已存在的项
选择”Add”->”Existing Item”:

观察一下,VisualGDB如何在Linux机器上浏览远程文件系统,就像在本地Windows浏览一样:

15 修改项目属性
Solution Explorer中,在项目上右击,选择”VisualGDB Project Properties”:

VisualGDB Project Properties窗口允许编辑各种VisualGDB专有的项目属性。比如,可以明确设定cmake的位置,或者添加”-DCMAKE_VAR_NAME=VALUE”参数来修改项目的配置:

16 Linux机器上运行CMake来构建项目
VisualGDB CMake项目是自治的(self-sufficient),我们也可以在Linux机器上运行CMake来构建它们:

17 高度优化的缓存机制
VisualGDB采用高度优化的缓存机制来避免一次又一次地下载同一个文件。它在CodeDB\<project>\VFSCache目录下保持着相关文件的缓存拷贝,并周期性地检测相关的远程目录是否变化。
常规的项目需要提前下载整个include目录和源文件目录,而直接访问的项目只有需要时才去读取相应的文件,所以这种方式性能更好且更加简单清晰。
如果想查看远程FS缓存的内部状态,可以通过”View”->”Clang IntelliSense Diagnostics Console”->”Remote FS”:

这个控制台将会显示从远程Linux机器罗列目录及获取文件所耗费的精确时间,所以你就可以快速检查你的网络能否满足直接访问模式所需的网络性能。
VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目的更多相关文章
- 限制SSH用户访问Linux中指定的目录
限制SSH用户访问Linux中指定的目录 http://os.51cto.com/art/201703/534895.htm#topx http://www.cnblogs.com/lykyl/arc ...
- SSH服务及通过SSH方式登录linux
SSH服务及通过SSH方式登录linux 1.检查SSH服务转自:[1]Linux之sshd服务https://www.cnblogs.com/uthnb/p/9367875.html[2]Linux ...
- Xshell通过ssh方式连接Linux服务器,通过Xftp进行文件传输
准备工作: 一.Linux服务器一台,并配置ssh(本文以腾讯云服务器为例). 1.生成秘钥 打开腾讯云控制台,依次选择:总览->云服务器->SSH秘钥 点击创建秘钥,输入秘钥名称,点击确 ...
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS ...
- CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问
1.安装GIT核心 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc g ...
- IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 了解HTTPS 为什么需要 HTTPS ? ...
- 使用putty连接Ubuntu虚拟机,使用ssh方式访问
1 前言 Ubuntu14.04版本是可以直接连接的,没想到新装的Ubuntu18.04竟然没有默认安装ssh. 则安装一下open-ssh-server就可以的. 2 步骤 2.1 更新一下源 命令 ...
- Asp.Net配置不允许通过url方式访问目录下的资源
Asp.Net网站发布后,有部分文件为了安全性,是不能直接通过url访问获取 通常有2种做法: 1.将文件目录建立在 App_code 或者App_Data 等默认的隐藏目录下 2.将文件的目录添加到 ...
- 配置kubectl客户端通过token方式访问kube-apiserver
使用的变量 本文档用到的变量定义如下: $ export MASTER_IP=XX.XX.XX.XX # 替换为 kubernetes master VIP $ export KUBE_APISERV ...
随机推荐
- 10.Django数据库操作(增删改)
插入数据 命令:create 或者 save create用法:ModelName.objects.create(itemName="itemValue") save用法:mode ...
- 更换好的yum源
最近重装了虚拟机,因为之前总是碰到一些 yum的软件太 旧了,索性重装了 虚拟机,从零开始,然后配置yum源,以便以后安装 插件包的时候是最新的.如下: 1,进入yum源配置目录cd /etc/yum ...
- JVM性能优化, Part 1 ―― JVM简介
JVM性能优化这些列文章共分为5章,是ImportNew上面翻译自Javaworld: 第1章:JVM技术概览 第2章:编译器 第3章:垃圾回收 第4章:并发垃圾回收 第5章:可伸缩性 众所周知,Ja ...
- php生成随机密码的自定义函数
php生成随机密码的自定义函数 生成一个随机密码的函数,生成的密码为小写字母与数字的随机字符串,长度可自定义. 复制代码代码如下: <?php /* * php自动生成新密码自定义函数(带实例 ...
- spring 注解事务
前提:在applicationContext.xml中配置<tx:annotation-driven transaction-manager="transactionManager&q ...
- 【LeetCode】【数组归并】Merge k Sorted Lists
描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- Linux 上通过rpm安装mysql
安装mysql之前要remove掉系统自带的mysql: rpm -qa | grep "MySQL*" 和rpm -qa | grep mysql 要确保卸载干净 rpm ...
- MySQL跳过密码登录
第一种 1.1停止mysql服务 1.2以管理员身份运行cmd,执行以下命令 cd C:\Program Files\mysql-5.7.17-winx64\bin mysqld --skip-gra ...
- Delphi 运行Word VBA 宏 删除软回车
Sub 整理网页()'整理网页:删除软回车.删除空白段.使段落文字两端对齐Selection.WholeStory Selection.Find.ClearFormatting S ...
- DELPHI-Delphi常用类型及定义单元
DELPHI-Delphi常用类型及定义单元 Type Unit Date SysUtils DeleteFile SysUtils or Windows (different versions) D ...