您的位置:首页 > 运维架构 > Linux

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

2017-11-21 23:33 1151 查看
  根据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机器罗列目录及获取文件所耗费的精确时间,所以你就可以快速检查你的网络能否满足直接访问模式所需的网络性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: