Visual Studio 2019中的远程调试支持

VisualStudio2019为针对Windows和Linux的MSBuild和CMake项目提供远程调试支持。由于进行了远程调试,现在可以实现以下场景和更多场景:

null
  • 在生产机器上调试,除了远程调试器工具之外,没有安装任何开发工具。
  • 针对您不日常使用的开发人员环境(即不太常见的操作系统或软件配置)。
  • 针对Visual Studio不可用的环境(即ARM64计算机或不受支持的操作系统版本)。

为了保证用户的无缝远程调试体验,需要将一些附加的依赖项复制到目标计算机。幸运的是,我们为您做到了这一点,并自动将这些依赖项与我们认为调试所需的来自您的项目的构建二进制文件一起部署。特别是在Windows场景中,我们会自动部署通用CRT库(仅用于调试,因为发布版本随Windows操作系统一起提供)以及VCRuntime库,这些库是在系统上没有这些库的环境中运行和调试二进制文件所必需的。

有关各种远程调试工作流的分步说明,请查看以下教程:

远程调试一个C++项目——VisualStudio微软文档

在VisualStudio.微软文档中部署、运行和调试Linux MSMSudioC++项目

教程:在远程Windows计算机| Microsoft Docs上调试CMake项目

在Visual Studio | Microsoft文档中配置CMake调试会话

注: 尽管使用visualstudio2019可以创建针对Linux和Windows的MSBuild和CMake项目,但是鼓励CMake用于Linux开发,因为在这两个平台中可以使用相同的项目文件。

远程部署的用户可定制性

无论您是针对Windows还是Linux,还是使用MSBuild或CMake,visualstudio都为您提供了定制部署的灵活性。我们将在下面的小节中介绍其中的一些内容。

针对Windows的MSBuild项目

在Visual Studio 2019中,可以非常轻松地部署和调试针对远程Windows计算机的MSBuild项目 调试 选项卡,则需要指定 远程命令 , 工作目录 , 远程服务器名称 部署目录 属性作为最低要求。如果要部署其他文件,则必须在 要部署的其他文件 财产。

图片[1]-Visual Studio 2019中的远程调试支持-yiteyi-C++库

VisualStudio2019允许您指定运行库的调试版本和发布版本。为此,必须设置 部署VisualC++调试运行库 部署VisualC++运行库 属性到 是的 .

设置好配置后,VisualStudio将负责将所有文件(包括所需的ucrt和vcruntime库)部署到远程计算机。

针对Linux的MSBuild项目

使用MSBuild项目以Linux为目标时,可以指定与生成计算机不同的计算机(默认设置)来部署和调试,如下所示:

The Remote Debug Machine setting set with a username, port, and authentication method

默认情况下,只有进程调试所需的文件才会部署到远程调试计算机。但是,在某些情况下,您可能需要对项目的部署进行更多的控制。在这些情况下,可以将下面的代码MSBuild元素附加到.vcxproj文件中,确保指定所需的实际源路径和目标路径:

<ItemGroup> 
   <RemoteDeploy Include="__example.cpp"> 
<!-- This is the source Linux machine, can be empty if DeploymentType is LocalRemote --> 
      <SourceMachine>$(RemoteTarget)</SourceMachine> 
      <TargetMachine>$(RemoteDebuggingTarget)</TargetMachine> 
      <SourcePath>~/example.cpp</SourcePath> 
      <TargetPath>~/example.cpp</TargetPath> 
<!-- DeploymentType can be LocalRemote, in which case SourceMachine will be empty and SourcePath is a local file on Windows --> 
      <DeploymentType>RemoteRemote</DeploymentType> 
<!-- Indicates whether the deployment contains executables --> 
      <Executable>true</Executable> 
   </RemoteDeploy> 
</ItemGroup>

您还可以在解决方案中指定要部署的其他源文件,前提是:在“解决方案资源管理器”>“选择属性”>“设置资源管理器”中的源文件上单击鼠标右键 内容 属性设置为“是”。

针对Windows的CMake项目

VisualStudio2019支持将CMake项目部署到远程Windows计算机,并使用 Visual Studio远程工具。 您可以指定 类型 远程机器名 launch.vs.json文件中的属性。

"configurations": [ 
   { 
      "type": "remoteWindows", 
      "project": "CMakeLists.txt", 
      "projectTarget": "CMakeProject.exe (CMakeProjectCMakeProject.exe)", 
      "name": "CMakeProject.exe (CMakeProjectCMakeProject.exe)", 
      "remoteMachineName": "[remote machine’s IP address]: [remote machine’s port number]", 
      "deployDebugRuntimeLibraries": true, 
      "deployRuntimeLibraries": true, 
      "deployDirectory": "~/foo", 
      "disableDeploy": true, 
   } 
]

VisualStudio2019允许您指定运行库的调试版本和发布版本。为此,必须设置 部署DebugRuntimeLibraries 部署RuntimeLibraries 属性到 是的 .

项目输出的内容将自动部署到远程计算机中的C:Windows默认部署目录。如果要指定其他位置,可以在 部署目录 财产。如果您根本不想部署文件,可以设置 禁用部署 是的 .

此外,还可以指定每次要部署的单个附加文件或整个目录,以防需要部署某些外部源/内容文件。为此,将以下块添加到launch.vs.json(确保用文件/目录的实际路径替换example.cpp/exampleDirectory):

"deploy": [ 
   { 
      "sourcePath": "~/example.cpp", 
      "targetPath": "~/test/example.cpp", 
   }, 
   { 
      "sourcePath": "~/exampleDirectory", 
      "targetPath": "~/test/exampleDirectory", 
   }, 
]

针对Linux的CMake项目

当使用CMake以Linux为目标时,可以指定不同于构建计算机(默认)的计算机来部署和调试。为此,只需将remotemachinenamejson文件设置为连接管理器中已建立的连接之一(IntelliSense将填充所有可用选项的列表)。

您还可以通过设置 部署目录 属性中的。

此外,如果希望完全控制部署,可以在launch.vs.json文件中附加以下代码块。例如:

"deploy": [ 
   { 
      "sourceMachine": "127.0.0.1 (username=example1, port=22, authentication=Password)", 
      "targetMachine": "192.0.0.1 (username=example2, port=22, authentication=Password)", 
      "sourcePath": "~/example.cpp", 
      "targetPath": "~/example.cpp", 
      "executable": "false" 
   } 
]

给我们你的反馈

下载 最新的 Visual Studio 2019预览 今天就来试试。我们很乐意收到您的来信,帮助我们确定优先级并为您构建合适的功能。我们可以通过以下评论联系到您, 开发者社区 ,和Twitter( @视觉 ). 提交bug或建议特性的最佳方法是通过开发者社区。

作者

Moyo Okeremi和Lisbeth Cardoso Guerra。

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0 分享