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

你可能听说过, Visual Studio 2015 介绍 GDB支持Android开发 . 该功能的有趣之处在于,因为它使用GDB进行调试,所以可以调整实现以调试其他支持GDB调试的目标(例如Linux和Raspberry Pi)。在这篇文章中,我将分享我在Linux上实现C++代码远程调试的步骤,Raspberry Pi。

null

这种方法确实有一些局限性,因为我正在修改专门为Android设计的实现,但它显示了这种功能的潜力。这是一个很好的例子 为什么我们要对GDB实现本身进行开源 . 还要注意,这不是交叉编译解决方案。您将在visualstudio中使用源文件,但它们将在远程Linux机器上编译。一旦设置好了东西,就可以触发断点并逐步遍历源代码,这除了正确设置SSH连接之外,没有多少额外的工作。

下面是步骤

  1. 下载Visual Studio 2015 RC . 对于安装类型,选择定制并选择VisualC++移动开发平台下跨平台开发。
  2. 从下载plink、putty、pscp和puttygen Putty下载站点 .
  3. 使用cert auth将SSH连接设置为Linux安装。一个很好的概述是 在Azure上与Linux一起使用SSH的说明 . 这些说明足够一般,它们应该包括从Windows连接到任何Linux机器,而不仅仅是在Azure中运行的机器。
  4. 从Windows计算机通过Putty连接到Linux计算机。系统将提示您服务器主机项不在注册表中。选择“是”将其添加到注册表中,以便主机被称为受信任主机。如果你不这样做,你会得到一个错误,稍后这是不清楚的问题。
  5. 您需要要在本地调试的源代码 C++ MaFrimeProject .
  6. 您需要创建一个xml配置文件,指定plink的位置、连接信息、远程计算机上的exe位置,并启动gdb。下面是一个例子。 <PipeLaunchOptions xmlns="http://schemas.microsoft.com/vstudio/MDDDebuggerOptions/2014" 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=""> </PipeLaunchOptions>
  7. 打开 命令窗口 ,在Visual Studio菜单上,选择“视图”->“其他窗口”->“命令窗口”。
  8. 通过以下命令传递配置文件: Debug.GDBLaunch /OptionsFile:[path] /Executable:foo
  9. 在Linux上享受VS2015远程调试的C++代码!

如果您想使事情更精简一些,在步骤5中,您可以在makefile项目中指定以下as build命令。

  • 要远程复制文件,请执行以下操作: 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之后开始时,您将得到一条错误消息,“Undefined command gdb”。我们的调试引擎尝试在建立连接后启动gdb,但是我们已经通过配置文件参数启动了它。如果我们不以这种方式启动,到GDB的连接就不能正确建立,并且可能会在目标机器上留下孤立的GDB进程。
  • 输入main后的第一条语句将丢失,即使它上有断点。
  • 可执行文件的参数不应是必需的,因为信息在选项文件中,并且传递的值未被使用。
  • 因为没有交叉编译支持,所以需要在Linux目标机器上获得工具链和gdb设置。

请让我们知道在下面的评论,如果你觉得这是有用的或你遇到任何问题。  我们也欢迎您提出任何改进建议。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享