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 ...
随机推荐
- PHP 提高PHP性能的编码技巧以及性能优化
0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的“函数”(译注:PHP ...
- SAP basis 常用事物
1.创建一个新的用户 完成client创建和拷贝后,在开始正式工作之前,需要创建新的用户. 用这个用户进行工作.默认ddic和sap*用户不要用于实际的业务. 创建用户的过程很简单,只要以su01 ...
- Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名 链接:http://www.cnblogs.com/smyhvae/p/4456420.html 链接:http://blog.csdn ...
- vue页面性能优化方案
个人在项目中用到的页面性能优化的方式总结. 一.均衡页面加载文件的大小和数量 1.项目中小图片图片转base64,通过工具如webpack进行图片压缩,文件进行压缩混淆等 2.vue-router 懒 ...
- Data Structure Binary Search Tree: Find k-th smallest element in BST (Order Statistics in BST)
http://www.geeksforgeeks.org/find-k-th-smallest-element-in-bst-order-statistics-in-bst/ #include < ...
- python3 内置常用函数系列一
python3 内置了一系列的常用函数, python英文官方文档详细说明:点击查看, 为了方便查看,将内置常用的函数的记录一下来. Python3版本所有的内置函数: 1.abs() print(a ...
- vi使用方法详细介绍
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- django-forms表单验证
django生成登录随机图片验证码:http://www.cnblogs.com/wupeiqi/articles/4786251.html def insert(request): # print( ...
- BEM —— 源自Yandex的CSS 命名方法论
原文链接: https://segmentfault.com/a/1190000000391762 人们问我最多的问题之一是在CSS类名中--和__是什么意思?它们的出现是源于BEM和Nicolas ...
- LINQ 学习路程 -- 查询操作 Expression Tree
表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y.x.<.y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构 ...