vs生成linux服务器程序,从Visual Studio到Linux上调试C++代码

从Visual Studio到Linux上调试C++代码

04/30/2015

5 分钟可看完

本文内容

[原文发表时间] 2015/4/29 10:00 PM

正如您可能已经听说的那样,Visual Studio 2015新推出了对Android开发的GDB支持。有趣的是,因为这项功能依赖GDB调试,我们完全可能稍加改动就实现针对其他同样支持GDB的平台(如Linux和Raspberry Pi)做代码调试。在这篇博客中我将会分享在Linux,Raspberry Pi上远程调试C++代码的步骤。

因为这套方法是我在最初专门为Android设计的实施上修改得来,它有一定的局限性,但是它显示了这项功能的潜力。这是我们为什么对GDB实施开源的一个很好的例子。还请注意这不是一个交叉编译方案。您需要在Visual Studio中编辑源码,再拿到Linux机器去编译。一旦配置好了之后,您就可以触发断点以及逐行调试源代码,除了对SSH连接做正确的设置以外不需要其他附加工作。

以下是步骤

下载Visual Studio 2015 RC。安装类型中,选择自定义安装,并且选中交叉平台手机开发下面的Visual C++手机开发。

从Putty下载站点中下载plink,putty,pscp和puttygen。

设置SSH连接到您的Linux安装使用证书身份验证。关于此项的一个不错的概览是在Azure上链接Linux的SSH使用指南。这些指南总体上足够涵盖从Windows连接到任何Linux机器,而不仅仅是那些运行Azure的机器。

通过Putty从您的Windows机器连接到Linux机器。系统将提示您的服务器主机密钥不在注册表中。选择yes以将其添加到注册表以使得主机受信。如果您不这样做,您将在后面得到一个错误提示,但它并不能清晰地指明问题所在。

您需调试的代码要放在本地机的C++ Makefile 工程项目里。

您将需要创建一个xml配置文件用来指定plink在哪儿,您的连接信息,在远程机器上的exe文件地址以启动GDB。以下是一个示例。

PipePath="plink.exe" PipeArguments="-i private.ppk user@server -batch -t gdb --interpreter=mi"

ExePath="/home/user/YourDir/exe" ExeArguments=""

TargetArchitecture="X64" WorkingDirectory="/home/user/YourDir" AdditionalSOLibSearchPath="">

7. 打开命令提示符窗口,在Visual Studio菜单中选择视图->其他窗口->命令提示符窗口。

8. 通过以下命令传递您的配置文件:

Debug.GDBLaunch /OptionsFile:[path] /Executable:foo

9. 享受在Linux上用VS2015远程调试您的C++程序吧!

如果您想让事情更加简单,在第5步您可以在Makefile项目中指定以下命令为构建命令。

远程复制您的文件:

pscp.exe -i private.ppk -r YourDir user@server:/home/user

远程编译:

plink.exe user@server -i private.ppk "cd ~/YourDir; g++ -g yourcode.cpp -o yourexecutable"

鉴于我上述的仅仅是对未来的预览,以下是一些已知问题:

在开始以上的第8步后你将遇到一个错误信息,“无定义命令gdb”。一旦连接建立,我们的调试引擎试图开始gdb,但是我们已经通过配置文件参数开始了调试。如果我们不是以这样的方式开始,就不能正确建立起到GDB的连接,并且将孤立的gdb进程遗留在目的机上。

即使您在上面建立断点,进入Main函数后的第一个代码语句总会错过。

无需输入可执行文件的执行参数,因为执行参数应该已经包含在选项文件中了,所以即使输入也不会被使用。

由于不支持交叉编译您需要把您的工具链和gdb安装在Linux目标机上。

如果您感觉这篇博客很有用或者您在使用中遇到任何问题,请在下面评论让我们知道。我们也欢迎任何有助于提升的建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值