VS2019中的远程调试支持先来一个长句自定义远程部署面向Windows的MSBuild工程面向Linux的MSBuild工程面向Windows的CMake工程面向Linux的CMake工程总结最后
原标题:VS2019中的远程调试支持
先来一个长句VisualStudio2019提供了面向Windows和Linux目标平台的MSBuild和CMake工程的远程调试功能 。
因为有了这个功能 , 我们可以有机会实现下面列出来的几个工作场景:
>在生产环境中直接进行调试 , 除了需要安装一些必要的远程调试辅助工具之外 , 你无需安装其他的开发工具 。
>可以在你不熟悉的开发环境中工作 , 例如 , 不同的操作系统 , 不一样的软件配置环境等 。
>在可以VisualStudio不可用的目标环境中进行调试 , 例如在ARM64的机器上就没有VisualStudio可以使用 , 以及其他的一些未受支持的操作系统 。
为了提供给开发者无缝的远程调试体验 , 你需要拷贝一些依赖文件到目标环境 。 幸运的是 , 我们可以自动帮你拷贝这些依赖文件到目标环境 。 特别是在基于Windows开发场景下 , 我们将自动拷贝UniversalCRT库(调试版本 , 因为发行版本以及在操作系统中自带了) , 以及VC运行时库到目标运行环境 , 如果这些运行环境中没有它们的话 。
如何配置远程调试环境 , 请大家参考Microsoft的文档 。 请注意 , 尽管VisualStudio2019可以用来创建面向Windows和Linux的MSBuild和CMake工程 , 但是因为相同的工程文件可以在上述两个操作系统平台中重用 , 所以我们建议在Linux开发环境中使用CMake 。
自定义远程部署不管你开发的程序是面向Windows平台还是Linux平台 , 或者是基于MSBuild的工作还是CMake工程 , VisualStudio都可以支持自定义远程部署 , 接下来我们具体看看如何配置 。
面向Windows的MSBuild工程你可以轻松容易地使用VisualStudio2019部署和调试面向一台远程Windows的MSBuild工程 。 在VisualStudio的配置对话框中 , 找到[Debugging]标签页 , 然后你需要指定[RemoteCommand] , [WorkingDirectory] , [RemoteServerName]和[DeploymentDirectory]等属性的值 。 如果你希望部署额外的其他文件 , 则你还需要设定[AdditionalFilestoDeploy]的值 。
文章图片
VisualStudio2019还可以支持指定调试版本和发行版本的运行时库 。 你需要设定[DeployVisualC++DebugRuntimeLibraries]和[DeployVisualC++RuntimeLibraries]的值为[Yes] 。
当所有配置完成之后 , VisualStudio将会自动部署所有这些文件到远程环境中 , 包括ucrt和vc运行时库文件 。
面向Linux的MSBuild工程当开发面向Linux的MSBuild工程时 , 你可以指定不同于你的开发环境的另外一台远程机器作为部署和调试环境 , 如下图所示:
文章图片
在默认情况下 , 只有那些调试需要的文件才会被部署到远程环境中 。 但是 , 在某些情况下 , 你可能需要控制你的工程文件的部署细节 , 在这种情况下 , 你可以在.vcproj工程文件中添加如下的代码 , 用来指定实际的源文件和你希望拷贝的目标路径 , 如下图所示:
文章图片
如果你希望部署解决方案中的其他源文件到目标环境 , 则可以在[解决方案窗口]中的源文件右键 , 然后打开源文件属性 , 并设置属性[Content]的值为[Yes] 。
面向Windows的CMake工程【VS2019中的远程调试支持先来一个长句自定义远程部署面向Windows的MSBuild工程面向Linux的MSBuild工程面向Windows的CMake工程面向Linux的CMake工程总结最后】VisualStudio2019同样支持将CMake工程部署到一台远程Windows环境上 , 并借助于VisualStudioremotetools工具扩展来实现远程调试 。 具体方法是 , 在launch.vs.json配置文件中设置[type]为[remoteMachineName] , 如下图所示:
文章图片
类似上面的 , VisualStudio2019也同样支持拷贝调试版本和发行版本的运行时库到目标环境 。
配置完成之后 , 工程的输出内容将会自动被部署到远程机器上的这个路径:[C:WindowsDefaultDeployDirectory] , 如果你希望指定其他的位置 , 则可以设置[deployDirectory]属性 , 如果你比希望部署任何文件 , 则可以将[disableDeploy]设置为[true] 。
另外 , 如果你希望每次都部署一些外部源文件或者内容 , 你可以设置这些额外的文件或者整个目录 。
具体方法是:在launch.vs.json中添加如下的代码(请确保你使用正确路径的
example.cpp/exampleDirectory文件替换了旧的版本) , 如下图所示:
- 中年|石林中的探岳与探岳中的你
- 接连霸屏的谭松韵为何不火?新剧《锦心似玉》倒捧红了何泓姗,孙俪道出了其中的原由
- 娱乐圈中的“模范夫妻”,邓超孙俪朴实无华,罗晋唐嫣牵手下班甜掉牙!
- 江苏南京一女子在德云社门前,质问门匾中的字写错了,网友纷纷怒斥
- 我的世界:MC中的有些事情,恐怕也只有老玩家才知道!
- 英语|降低英语在中小学教学中的地位,是必要的改革,但不能过犹不及!
- 渝武高速公路建设中的“甜甜”
- LOL中的“暗裔”是从哪冒出来的?
- 十二星座命中的大贵人各是谁
- 晚长还是长不高?且看以下条件是否具备,全中的孩子肯定大高个