VisualGDB系列5:使用VS来开发Linux程序
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。
本文演示如何使用VS来构建和调试Linux应用程序。
为了尝试本文中的步骤,你需要一台Windows机器和一台Linux机器:
- 两个物理电脑;
- 一个Windows电脑及运行在其上的Linux虚拟机(使用VIRTUALBOX/VMWARE);
- 一个Linux电脑及运行在其上的Windows虚拟机(使用VIRTUALBOX/VMWARE)。
为了使用VisualGDB创建、构建、调试一个简单的Linux应用程序,需要遵循以下步骤。
1 下载安装
下载并安装最新的VisualGDB。
2 选择项目类型
在Windows电脑上启动VS,选择”File->New project”,然后选择”VisualGDB->Linux Project Wizard”,并设定项目位置后点击”OK”:
3 选择构建子系统
VisualGDB Linux项目向导启动后,需要选择构建子系统(build subsystems)。VisualGDB支持4中不同的构建子系统来创建Linux项目。本文选择使用MSBuild子系统(对于大多数新建项目,推荐该子系统):
接下来分别介绍这4种子系统。
3.1 MSBuild
对于大多数项目来说我们推荐使用MSBuild,因为它能提供原生的感官风格。
VisualGDB MSBuild后端优化很大,能够很快将文件传递到Linux机器上并构建它们。
MSBuild也能够在Linux机器上处理所有的依赖。即便对于缓慢的网络连接,也能够减少延时。
3.2 CMake
如果你想不使用VS而直接在Linux机器上构建项目,可以参考系列文档《使用VS创建CMake Linux项目》来创建一个基于CMake的项目。
3.3 Qt
如果你的项目使用Qt,可以选择”Use Qt”来使用QMake。
3.4 GNU Make
如果你只是单纯的想使用GNU Make,VisualGDB也能够支持。它支持通过VisualGDB GUI来编辑Makefile文件,也能自动配置IntelliSense。
4 建立SSH连接
如果你之前从没有创建过项目,在下一页选择”Create a new SSH connection”:
提供主机名,用户名和密码。推荐勾选”setup public key”复选框,勾选后,VisualGDB就可以自动产生一个public/private keypair,将其存储到你Windows账户的key container中,并使用它来远程连接Linux机器。
如果你没有使能public key授权,VisualGDB将会记住这次连接的密码。存储的密码使用一个key来加密,该key存储在你Windows账户中。后面只有使用你的Windows账号来登录,该密码才是可用的。
5 选择工具链(toolchain)
如果你想使用不同的工具链(比如LLVM),可以在工具链列表中选择。工具链列表的右侧有个配置按钮,使你能够定制单独的工具,比如编译器。
也可以在这里选择一个交叉编译器,或者设定一个不同的部署机器。根据本页面下方的图表来检查你的配置是否正确:
- 锤子图标对应的是运行编译器的机器;
- “Play”图标对应的机器是,连接(launched)的被调试程序所在的机器。
6 测试工具链
点击”Next”后,VisualGDB通过尝试编译并运行一个普通程序来测试你的工具链。如果这一步检测出错误,可以看到详细的错误日志及进一步的问题解决信息。
7 选择源码访问方式
因为同一份代码需要在Windows上编辑,然后在Linux上编译,VisualGDB需要保持源码同步。最简单的方式是,通过SSH方式自动进行文件上传。当然,VisualGDB能够建立共享文件夹(需要root密码)。
如果你使用CMake,还可以配置VisualGDB,从而能够以SSH方式直接访问Linux机器上的源码,就像这些源码存在于Windows上一样。
8 完成项目创建
点击”finish”完成创建向导。如果你是第一次使用这个Linux机器创建项目,VisualGDB将会对include目录进行本地缓存,从而可以在IntelliSense中使用。
9 程序调试
恭喜,到这一步项目就创建成功了。现在可以构建你的项目,设置一个断点,按F5开始调试程序了。
可以通过如下命令为远程console切换黑/白主题:
Tools->Options->VisualGDB->General->GUI->use classic black and white color scheme for consoles
10 修改调试settings
Solution Explorer中,在项目上右键并选择”VisualGDB Project Properties”,就可以修改各种调试settings了。
在VisualGDB Project Properties窗口中,你可以改变各种settings,也可以在configurations之间拷贝settings。在左边的搜索框中,可以使用关键字来查找settings。
11 两种方式修改项目的settings
有两种方式修改项目的属性,一种是VisualGDB提供的修改捷径,另一种是在VS的属性窗口中
11.1 在VisualGDB Project Properties中修改
对于一些类似”Include directories”这样的通用配置,在”MSBuild Settings page”中VisualGDB提供了方便的修改捷径:
11.2 在VS属性窗口中修改
当然,也可以在常规的VS Properties中修改,既可以修改项目的属性,也可以修改单个文件的属性:
12 使用VisualGDB工具栏
在VS的菜单栏上右键单击来使能VisualGDB工具栏。这将提供常用功能的快捷使用方式(比如,为下次程序运行改变程序的参数):
13 获得精确的IntelliSense
VisualGDB使用准确的头文件来获得最精确的IntelliSense,这些头文件来自Linux机器。每个远程机器的头文件都单独缓存在” %LOCALAPPDATA%”下。
14 基于Clang的IntelliSense引擎
VisualGDB5.0及其后续版本包括一个基于Clang的IntelliSense引擎,能够支持GNU C/C++扩展,比如结构体初始化列表:
15 支持”Create from use”和C/C++ code map
VisualGDB还支持一些特性,比如”Create from use”,详细的C/C++ code map等。
尝试调用一个不存在的函数时,会打开智能的tag菜单并选择”Create function/method stub”:
VisualGDB将会自动检测参数的类型,并让你选择一个地方来保存产生的函数stub:
VisualGDB系列5:使用VS来开发Linux程序的更多相关文章
- VisualGDB系列7:使用VS创建Linux静态库和动态库
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何在VS中创建静态库和动态库, ...
- cygwin,在win中开发linux程序
cygwin,在win中开发linux程序 http://www.cygwin.cn/site/info/show.php?IID=1001 很多用windows的朋友不习惯于用linux的开发环境 ...
- gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)
cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...
- 使用Visual Studio 2017开发Linux程序
环境: win7_x64旗舰版.VS2017企业版.VMware10.0.2.CentOS7 在CentOS7上首先需要安装gcc.g++和gdbserver,这里就不多说 一.安装VS2017 1. ...
- visual studio 开发linux程序
VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb ,这2个都是商业软件.) Visual GDB ...
- WSL2:在Windows系统中开发Linux程序的又一神器
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- windows程序员开发linux程序的头一个月
开发环境选择 vim,vscode,qt,visual studio都可以做linux c++开发,但是作为windows程序员,最熟悉的还是visual stuio,加上visual studio ...
- VisualGDB系列8:使用VS创建CMake Linux项目
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何使用VS来创建.构建.调试一 ...
- VisualGDB系列10:快速调试Linux应用程序
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何快速调试GCC构建的Linu ...
随机推荐
- Eclipse +Tomcat配置-【菜鸟学JAVA】
说起来也惭愧,以前用(Unieap)工具搞了一年多的JAVA+Oracle,现在居然在Eclipse中配置tomcat都搞了半天时间,原来一直是做.NET的. 今天开始不再用集成的环境,话不多说,开始 ...
- ExtASPNet web.config
[转CSDN]:http://download.csdn.net/download/mcqq123321/4607708 修改 Web.config 打开 web.config,在 configura ...
- ARM汇编学习笔记
ARM RISC (Reduced Instruction Set Computers) X86 CISC (Complex Instruction Set Computers) ...
- leetcode 901. Online Stock Span
Write a class StockSpanner which collects daily price quotes for some stock, and returns the span of ...
- 【leetcode刷题笔记】Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- Python 核心编程 课后习题 第五章
2. 操作符. (a) 写一个函数, 计算并返回两个数的乘积. (b) 写一段代码调用这个函数, 并显示它的结果. def multi(a,b): return a * b result = mult ...
- 斯坦福机器学习视频笔记 Week2 多元线性回归 Linear Regression with Multiple Variables
相比于week1中讨论的单变量的线性回归,多元线性回归更具有一般性,应用范围也更大,更贴近实际. Multiple Features 上面就是接上次的例子,将房价预测问题进行扩充,添加多个特征(fea ...
- Spring中ApplicationContext和beanfactory区别
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- 【转】Struts2的线程安全 和Struts2中的设计模式----ThreadLocal模式
[转]Struts2的线程安全 和Struts2中的设计模式----ThreadLocal模式 博客分类: 企业应用面临的问题 java并发编程 Struts2的线程安全ThreadLocal模式St ...
- linux shell编程(三) if 和 for
if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3f ...