Visual Studio 2015中使用gdb远程调试linux程序
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
不过由于文章较为简略,还是踩了点坑
- 首先在linux主机(虚拟机)上使用-g编译c++代码
- 下载plink,并测试ssh可以登录
- VS2015在安装时需要勾选交叉平台手机开发下面的Visual C++手机开发
- 新建一个c++ makefile项目,把源码添加到项目中
- 新建一个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两种方式登录
- 打开 view -> other window -> command window
- 输入命令
`Debug.MIDebugLaunch /Executable:foo /OptionsFile:d:\debug.xml`
- 有些过时的教程使用GDBLaunch,已废弃
- foo 名字自定义,不重要
- OptionsFile 需要绝对路径,如果找不到OptionsFile,则报错
Options file '*.xml' does not exist