龙空技术网

VS2019中的远程调试支持

漫漫开发路 428

前言:

眼前朋友们对“vs2019不能调试程序”大体比较珍视,兄弟们都需要分析一些“vs2019不能调试程序”的相关知识。那么小编也在网摘上搜集了一些有关“vs2019不能调试程序””的相关内容,希望小伙伴们能喜欢,我们快快来了解一下吧!

先来一个长句

Visual Studio 2019提供了面向Windows和Linux目标平台的MSBuild和CMake工程的远程调试功能。

因为有了这个功能,我们可以有机会实现下面列出来的几个工作场景:

> 在生产环境中直接进行调试,除了需要安装一些必要的远程调试辅助工具之外,你无需安装其他的开发工具。

> 可以在你不熟悉的开发环境中工作,例如,不同的操作系统,不一样的软件配置环境等。

> 在可以Visual Studio不可用的目标环境中进行调试,例如在ARM64的机器上就没有Visual Studio可以使用,以及其他的一些未受支持的操作系统。

为了提供给开发者无缝的远程调试体验,你需要拷贝一些依赖文件到目标环境。幸运的是,我们可以自动帮你拷贝这些依赖文件到目标环境。特别是在基于Windows开发场景下,我们将自动拷贝Universal CRT库(调试版本,因为发行版本以及在操作系统中自带了),以及VC运行时库到目标运行环境,如果这些运行环境中没有它们的话。

如何配置远程调试环境,请大家参考Microsoft的文档。请注意,尽管Visual Studio 2019可以用来创建面向Windows和Linux的MSBuild和CMake工程,但是因为相同的工程文件可以在上述两个操作系统平台中重用,所以我们建议在Linux开发环境中使用CMake。

自定义远程部署

不管你开发的程序是面向Windows平台还是Linux平台,或者是基于MSBuild的工作还是CMake工程,Visual Studio都可以支持自定义远程部署,接下来我们具体看看如何配置。

面向Windows的MSBuild工程

你可以轻松容易地使用Visual Studio 2019部署和调试面向一台远程Windows的MSBuild工程。在Visual Studio的配置对话框中,找到[Debugging]标签页,然后你需要指定[Remote Command],[Working Directory],[Remote Server Name]和[Deployment Directory]等属性的值。如果你希望部署额外的其他文件,则你还需要设定[Additional Files to Deploy]的值。

Visual Studio 2019还可以支持指定调试版本和发行版本的运行时库。你需要设定[Deploy Visual C++ Debug Runtime Libraries]和[Deploy Visual C++ Runtime Libraries]的值为[Yes]。

当所有配置完成之后,Visual Studio将会自动部署所有这些文件到远程环境中,包括ucrt和vc运行时库文件。

面向Linux的MSBuild工程

当开发面向Linux的MSBuild工程时,你可以指定不同于你的开发环境的另外一台远程机器作为部署和调试环境,如下图所示:

在默认情况下,只有那些调试需要的文件才会被部署到远程环境中。但是,在某些情况下,你可能需要控制你的工程文件的部署细节,在这种情况下,你可以在.vcproj工程文件中添加如下的代码,用来指定实际的源文件和你希望拷贝的目标路径,如下图所示:

如果你希望部署解决方案中的其他源文件到目标环境,则可以在[解决方案窗口]中的源文件右键,然后打开源文件属性,并设置属性[Content]的值为[Yes]。

面向Windows的CMake工程

Visual Studio 2019同样支持将CMake工程部署到一台远程Windows环境上,并借助于Visual Studio remote tools工具扩展来实现远程调试。具体方法是,在launch.vs.json配置文件中设置[type]为[remoteMachineName],如下图所示:

类似上面的,Visual Studio 2019也同样支持拷贝调试版本和发行版本的运行时库到目标环境。

配置完成之后,工程的输出内容将会自动被部署到远程机器上的这个路径:[C:\Windows Default Deploy Directory\],如果你希望指定其他的位置,则可以设置[deployDirectory]属性,如果你比希望部署任何文件,则可以将[disableDeploy]设置为[true]。

另外,如果你希望每次都部署一些外部源文件或者内容,你可以设置这些额外的文件或者整个目录。

具体方法是:在launch.vs.json中添加如下的代码(请确保你使用正确路径的example.cpp/exampleDirectory文件替换了旧的版本),如下图所示:

面向Linux的CMake工程

当开发面向Linux的CMake工程时,你可以指定不同于开发环境的另外一台机器作为目标部署和调试凭条。具体方法是:仅需要在[Connection Manager]中设置一个已建立连接的remoteMachineName json文件即可(IntelliSense组件会自动列出所有可用的选项)。

你还可以通过设置Launch.vs.json中的[deployDirectory]属性来自定义目标部署位置。

如果你希望完全地控制你的部署工作,你可以在launch.vs.json文件中添加如下的代码:

总结

惊!Visual Studio的开发宇宙进一步地接近完成状态了。

(还有能打的吗?)

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新的开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《Remote Debug Support in Visual Studio 2019》

标签: #vs2019不能调试程序