根据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机器罗列目录及获取文件所耗费的精确时间,所以你就可以快速检查你的网络能否满足直接访问模式所需的网络性能。

转载于:https://www.cnblogs.com/robinex/p/7875934.html

VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目相关推荐

  1. Linux每个用户单独配置ssh,大神全面解读如何限制SSH用户访问Linux中指定的目录...

    将 SSH 用户会话限制访问到特定的目录内,特别是在 web 服务器上,这样做有多个原因,但最显而易见的是为了系统安全.为了锁定 SSH 用户在某个目录,我们可以使用 chroot 机制. 在诸如 L ...

  2. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

    Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站 http://www.cnblogs.com/zhongweiv/archive/2013/01/07/http ...

  3. vscode之ssh方式连接linux失败

    公众号:嵌入式不难 出现问题原因 windows上的vscode版本更新了,但是linux服务器上的~/.vscode-server没有更新,导致了linux自动下载最新文件,但是下载速度又很慢,所以 ...

  4. 华为交换机基本配置之Telnet和SSH方式远程登录

    今天给大家带来的是如何在华为交换机配置Telnet和SSH的配置.实验拓扑如下 实验拓扑 实验需求 按照图示连接到真机,并配置IP地址(真机IP地址配置到VirtualBox Host-Only Et ...

  5. 通过ssh公钥访问linux服务器

    How To Set Up SSH Keys on CentOS 7 1 生成密钥(可以rsa或者ed25519,推荐25519) ssh-keygen -t ed25519 -C "xxx ...

  6. nginx配置域名后的二级目录访问不同项目的配置

    场景描述: 通过二级目录(虚拟目录,应用程序)的方式访问同一ip+端口的不同应用,例如location是用户使用页面,location/admin/是管理页面,location部署在192.168.1 ...

  7. 嵌入式linux svn,Linux下配置subversion使其支持svn+ssh方式访问

    普通访问(略) svn://访问方式(svnserve -d -r /opt/svnrepos) ssh配置(假设用户为svn:svnusers) chmod 700 /home/svn/.ssh c ...

  8. nginx 判断手机端跳转_Nginx系列:配置跳转的常用方式

    阅读文本大概需要3分钟. 随着应用服务的增多,服务可能部署在不同的服务器上.这些服务有可能存在IP.端口Port.请求的ContextPath等一样的情况,怎么合理的配置他们的跳转呢?下面介绍三种常见 ...

  9. VisualGDB 系列

    VisualGDB系列11:Linux C++项目中使用外部Linux库 VisualGDB系列10:快速调试Linux应用程序 VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目 ...

  10. 华为S5700系列交换机配置

    华为S5700系列交换机配置 vlan ba 9 11 93 //批量创建vlan int vlan 93 //进入三层接口 ip add 10.93.1.115 24 //配置三层网关地址 des ...

最新文章

  1. 小松卡特彼勒无人驾驶_运输量突破20亿吨,卡特彼勒无人驾驶矿卡迎里程碑时刻...
  2. 奇虎360正式开源其深度学习调度平台,支持TensorFlow、MXNet等框架
  3. 带头结点的链式表操作集
  4. WinAPI: waveOutPause - 暂停播放
  5. Yii2.0数据格式器
  6. jquery 常见选择器以及一些方法
  7. java 实现WebService 以及不同的调用方式
  8. 大数据面试官别再问闭包了
  9. ffmpeg ffplay ffprobe资料整理
  10. 概率图模型(PGM)学习笔记(一)动机与概述
  11. iso标准软件测试标准,软件质量-ISO9000标准+SQA简介
  12. dos2unix 安装和使用
  13. vax与vay的区别
  14. python sorted怎么排序_Python sorted排序方法怎么用
  15. dns外带数据【渗透测试】
  16. UIWebView加载本地HTML文件
  17. 债券久期为什么难理解
  18. 2020ICPC南京 F Fireworks(概率,三分)
  19. 100行代码,10分钟,详解Vue2.x响应式原理——理解Observer,Dep,Watcher
  20. 北京春运更智能:自助验票、微信查询

热门文章

  1. vi编辑器使用技巧篇1
  2. 奥威尔:老大哥在看着你-软件公司十诫
  3. 智能优化算法:鼠群算法
  4. 排序算法专题-冒泡排序
  5. 程序员必备算法——算法相关链接总结
  6. WAMP安装redis扩展失败
  7. fragment嵌套viewpager嵌套fragment第二次加载数据不显示问题
  8. SpringMVC-01-基本组件与注解式编程
  9. Gson之TypeAdapter的工作原理分析(1)
  10. Flink Forward Asia 2020,明天见!