VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用。

如果可以使用VS来调试linux程序,应该是一件比较愉快的事情。

这在2015中变得可能,因为从2015开始VS支持Android、iOS开发和调试。

虽然并没有正式提供linux程序的调试支持,但是可以通过一些技巧达到

微软开源了MIEngine项目,通过Machine Interface ("MI")与gdb、lldb交互。

VS通过该MIEngine即可调试linux程序(visual studio code的cpptools插件也集成MIEngine)。

MIEngine的wiki有篇文章介绍了调试步骤。Start debugging other platforms using the MIEngine

不过由于文章较为简略,还是踩了点坑

  1. 首先在linux主机(虚拟机)上使用-g编译c++代码
  2. 下载plink,并测试ssh可以登录
  3. VS2015在安装时需要勾选交叉平台手机开发下面的Visual C++手机开发
  4. 新建一个c++ makefile项目,把源码添加到项目中
  5. 新建一个debug.xml文件,输入以下内容
<PipeLaunchOptions xmlns="http://schemas.microsoft.com/vstudio/MDDDebuggerOptions/2014"
PipePath="plink.exe" PipeArguments="-pw 123456 user@server -batch -t gdb --interpreter=mi"
ExePath="/home/user/YourDir/exe" ExeArguments=""
TargetArchitecture="X64" WorkingDirectory="/home/user/YourDir" AdditionalSOLibSearchPath="">
</PipeLaunchOptions>

需要注意:

  • plink需要在系统path中,如果plink无法找到,会弹窗提示无法找到文件
  • plink支持password和ppk两种方式登录
  1. 打开 view -> other window -> command window
  2. 输入命令
`Debug.MIDebugLaunch /Executable:foo /OptionsFile:d:\debug.xml`
  • 有些过时的教程使用GDBLaunch,已废弃
  • foo 名字自定义,不重要
  • OptionsFile 需要绝对路径,如果找不到OptionsFile,则报错

    Options file '*.xml' does not exist

Visual Studio 2015中使用gdb远程调试linux程序的更多相关文章

  1. visual studio 2015使用python tools远程调试maya 2016

    步骤: 1. 去https://apps.exchange.autodesk.com/MAYA/en/Home/Index搜索Developer Kit并下载,maya 2016可以直接点击这里下载. ...

  2. Visual Studio 2015中的常用调试技巧分享

    .NET 技术交流群:337901356 欢迎您的加入! 为什么要学习调试? 调试(Debug)是作为一个程序员必须要学会的东西,学会调试可以极大的提高开发效率,排错时间,很多人不喜欢调试,但我认为这 ...

  3. WebApi-路由机制 Visual Studio 2015中的常用调试技巧分享

    WebApi-路由机制   一.WebApi路由机制是什么? 路由机制通俗点来说:其实就是WebApi框架将用户在浏览器中输入的Url地址和路由表中的路由进行匹配,并根据最终匹配的路由去寻找并匹配相应 ...

  4. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

  5. ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...

  6. GitHub在Visual Studio 2015中获得TFS/VSO同等地位

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在Visual Studio 2015中微软为GitHub提供了扩展插件,从而让GitHub ...

  7. Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用

    Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用 Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.cs ...

  8. ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用

    Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.css预处理器的构建工具,它帮助开发者处理客户端开发中的一些烦操重复性的工作.Grun ...

  9. 微软移除Visual Studio 2015中的UML

    微软已经在Visual Studio 2015中移除了UML(Unified Modeling Language,统一建模语言),原因是该语言使用率过低.因此微软要优化产品结构,把好钢用在刀刃上. V ...

随机推荐

  1. I2C总线驱动框架详解

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,I2C通信方法(”algorithm”)上层的,与 ...

  2. SDK | 声波传输

    SDK | 声波传输 - 音频流生成 https://github.com/CloudSide/WaveTransSdk/tree/master/c/freq_util Objective-C: ht ...

  3. xib创建cell的两种方法

    方法一:第一步:[self.collectionView registerNib:[UINib nibWithNibName:@"QGLShareBtnCell" bundle:n ...

  4. notepad++换行替换

  5. HDU1501 Zipper(DFS) 2016-07-24 15:04 65人阅读 评论(0) 收藏

    Zipper Problem Description Given three strings, you are to determine whether the third string can be ...

  6. 关于BufferefReader.readLine()方法的理解

    有以下代码:    BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in)); String ...

  7. hdu 5046 二分+DLX模板

    http://acm.hdu.edu.cn/showproblem.php?pid=5046 n城市建k机场使得,是每个城市最近机场的距离的最大值最小化 二分+DLX 模板题 #include < ...

  8. SyntaxError: Non-ASCII character '\xe5' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

    python的默认编码文件是用的ASCII码,而你的python文件中使用了中文等非英语字符. 在Python源文件的最开始一行,加入一句: # coding=UTF-8

  9. SQL分组合并

    STUFF ( character_expression , start , length ,character_expression ) select TcodMedInst_GUID,stuff( ...

  10. MongoDB与SqlSugar与Ado.Net对比

    SqlSugar NET 4.+ & .NET CORE 高性能 轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术 MongoDB与MySql的安装省略...虽然遇到了一些意外 ...