根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。

本文将会阐述如何使用VisualGDB来构建和调试Linux应用程序:涉及到哪些工具,以及它们之间是如何交互的。

后续博文会介绍如何使用VisualGDB来一步步构建Linux应用程序。

使用VisualGDB来构建和调试Linux应用程序涉及到两台电脑:一台是运行VS的Windows电脑,另一台是能够进行SSH访问的Linux系统电脑。

VisualGDB将如下任务无缝集成到VS中:

  • 构建你的项目;
  • 调试应用程序;
  • 对Linux include文件进行IntelliSense支持。

1 源文件位置

使用VS创建基于VisualGDB的Linux项目时,VisualGDB向导允许你选择一个Linux电脑上的目录,该目录用于在Linux电脑上存储该项目。每个源文件会有两个实例:一个在Windows电脑上,另一个在Linux电脑上。默认的Linux目录是:/tmp/VisualGDB/<ProjectName>。

2 构建项目(build the project)

当使用VS构建Linux项目时,VisualGDB将会在后台做如下事情:

(1) 检查你是否添加、删除、重命名了源文件,如果是,就会自动更新Makefile文件;

(2) 检查是否引用了任何使用VisualGDB构建的库项目,如果是,则将其更新到Makefile文件中;

(3) 如果你要重新构建该项目,或者Linux电脑上不存在目标目录,那么所有的源文件将会发送到Linux电脑上。否则,VisualGDB只会检查最后一次构建之后哪些文件有了变化,并将这些变化了的文件发送到Linux电脑上;

(4) 最后,VisualGDB将会在Linux电脑上发起GNU make命令,从而让其构建你的应用程序;

(5) 如果GNU make或gcc报告了错误,VisualGDB将错误信息转换成VS格式,并显示到错误面板上。Linux文件名称会自动转换成相应的Windows文件名称。

3 调试应用程序

在VS中,当你使用GDB选择Debug->Start Debugging,VisualGDB将会在Linux电脑上发起一个gdb实例,并在后台控制它。使用VisualGDB进行调试,和使用VS调试一个普通的Windows应用程序没有什么区别:单步,watch窗口,调用栈,内存,汇编及其他的特性。VisualGDB会处理文件名称的转换。

然后,还可以通过GDB会话窗口来查看向GDB发送了哪些命令。如果你习惯了命令行调试,还能够发送你自己的命令。

4 IntelliSense支持

当你要创建或引入一个Linux项目,VisualGDB将会从远程电脑上查询标准的inclue文件位置,并将它们拷贝到你的Windows电脑上,然后添加到该项目的IntelliSense include位置。于是,code suggestion将会像Windows项目一样地工作。通过使用VisualGDB Project Properties窗口或Source Cache Manager,你也可以控制缓存目录。

VisualGDB系列4:概述-Linux程序与VS的更多相关文章

  1. VisualGDB系列11:Linux C++项目中使用外部Linux库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...

  2. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  3. VisualGDB系列10:快速调试Linux应用程序

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何快速调试GCC构建的Linu ...

  4. VisualGDB系列8:使用VS创建CMake Linux项目

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何使用VS来创建.构建.调试一 ...

  5. VisualGDB系列7:使用VS创建Linux静态库和动态库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何在VS中创建静态库和动态库, ...

  6. VisualGDB系列6:远程导入Linux项目到VS中

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何将Linux机器上的Linu ...

  7. VisualGDB系列1:VisualGDB总体概述

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文总体介绍VisualGDB能给你带来 ...

  8. 应用 Valgrind 发现 Linux 程序的内存问题

    如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在.有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题.掌握 valgri ...

  9. 应用 Valgrind 发现 Linux 程序的内存问题(转)

    Valgrind 概述 体系结构 Valgrind 是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个 ...

随机推荐

  1. spring 配置c3p0连接池

    一.导入与c3p0相关的jar包 二.xml配置文件 CombopooledDataSource类中提供了相应属性的set方法,因此可是使用属性注入的方式实例化对象. 三.示例 在userServic ...

  2. linux 字符驱动

    1 结构体说明:     struct cdev {         struct kobject kobj;          // 每一个 cdev 都是一个 kobject         st ...

  3. PHP环境变量归纳(转自网络)

    PHP环境变量主要有$GLOBALS[].$_SERVER[].$_GET[].$_POST[].$_COOKIE[].$_FILES[].$_ENV[].$_REQUEST[].$_SESSION[ ...

  4. Swift编程语言学习6—— 闭包

    闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似.   闭 ...

  5. (转)RequireJS shim 用法说明

    RequireJS中如果使用AMD规范,在使用的过程中没有太多的问题,如果加载非AMD规范的JS文件,就需要使用Require中的shim. require.config({ paths:{ jque ...

  6. Spark Structured Streaming框架(1)之基本用法

     Spark Struntured Streaming是Spark 2.1.0版本后新增加的流计算引擎,本博将通过几篇博文详细介绍这个框架.这篇是介绍Spark Structured Streamin ...

  7. 多图切换jQuery图片滑块插件

    在线演示 本地下载

  8. F5与Ctrl+F5及地址栏输入地址回车

    按F5等同于点击页面地址栏的刷新图标. 地址栏输入地址然后回车: 根据缓存内容是否过期决定是否发送请求给服务端 F5: 浏览器无论如何都得发送请求给服务端,包含If-Modified-Since/If ...

  9. 第三篇 css属性

    一.颜色属性 颜色属性有下面四种方式 <div style="color:blueviolet">ppppp</div> <div style=&qu ...

  10. codeforces 54A

    题意:收到礼物的规则为每个假日必收到一份礼物,每K天里至少收到一份礼物,求出N天中收到的礼物的最小数量. 思路:将N天根据假日所在天数分为一段段,当假日与假日之间间隔天数hol[i]>-hol[ ...