首页 > 技术文章 > Visual Studio 2015中使用gdb远程调试linux程序

lingdhox 2016-09-03 21:08 原文

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

推荐阅读