使用VisualStudio 2019,可以在远程Linux系统上构建和调试C++项目,或者 Windows Linux子系统(WSL) . 您可以在visualstudio中使用 基于MSBuild的Linux项目 或者我们的 对CMake的本机支持 . CMake允许您使用相同的源代码和构建脚本来针对多个平台,我们建议您使用任何跨平台或着眼于开源的产品。本文介绍了我们在Visual Studio中对Linux支持的最新改进,包括:
- Linux上对Ninja的支持。 忍者 是一个注重速度的构建系统。一段时间以来,Ninja一直是针对Windows的CMake配置的默认生成器(底层构建系统),但在VisualStudio2019版本16.6 Preview 3中,我们添加了 Linux上对Ninja的支持 . Ninja通常比Unix Makefiles更快,现在是针对远程系统或WSL的新CMake配置的默认生成器 .
- 对gdbserver的一流支持。Gdbserver是一个允许您远程调试Linux上运行的应用程序的程序。在目标系统可能没有运行gdb的资源的嵌入式场景中,它特别有用。在VisualStudio2019版本16.7预览版1中,我们添加了 新调试器配置 在远程系统上使用gdbserver调试CMake项目。这个 无需手动配置launch.vs.json 正如我们之前的博文所述: 用gdbserver调试Linux-CMake项目 .
- 对连接管理器的改进。这个 连接管理器 在visualstudio中,您可以管理和存储到远程系统的安全SSH连接。我们会听取您的反馈,在VisualStudio2019版本16.7预览版2中,您可以 在连接管理器中编辑和设置默认远程连接。 这将允许您编辑现有连接(例如,如果目标设备的IP地址发生更改),并通过CMake项目中的${defaultRemoteMachineName}在CMakeSettings.json和launch.vs.json中设置要使用的默认远程连接。
下面列出了有关所有这些新功能的更多详细信息。
在Linux上使用Ninja改进了构建时间
忍者 是一个注重速度的构建系统。在VisualStudio2019版本16.6预览版3中,我们添加了对在远程Linux系统和WSL上使用Ninja构建CMake项目的支持。
Ninja通常比Unix Makefiles快,现在是针对远程系统或WSL的新CMake配置的默认生成器。您可以使用以下命令在基于Debian的Linux系统上安装ninja:
sudo apt-get update sudo apt-get install ninja-build
我们在两个开源CMake项目上运行了性能测试来比较Ninja和Unix makefile: 公告3 和 LLVM公司 . 这些测试显示了从visualstudio进行完全重建的时间,并在本地VM(Ubuntu)上运行。
忍者 | 制造 | |
公告3 | 3分钟 | 11分钟 |
LLVM公司 (链接平行度设置为2) | 40分钟 | 143分钟 |
在VisualStudio2019版本16.6预览版3或更高版本中,您可以尝试使用CMake和Ninja直接从VisualStudio在Linux上构建项目,以利用这些性能改进并缩短构建时间。
在CMake项目中对gdbserver的一流支持
在VisualStudio2019版本16.6预览版2中,我们引入了 使用gdb简化远程调试的新调试模板 . 在VisualStudio2019版本16.7预览版1中,我们在此模板上进行了扩展,以包括对使用gdbserver进行调试的一流支持。
CMake项目的调试会话在launch.vs.json中配置。有关此文件的更多信息以及添加新配置的说明,请参阅我们的 更新的文档 . “cppgdb”类型的配置用于在Linux系统或WSL上进行远程调试。
{ "type": "cppgdb", "name": "CMakeLists.txt", "project": "CMakeLists.txt", "projectTarget": "", "comment": "Learn how to configure remote debugging. See here for more info http://aka.ms/vslinuxdebug", "debuggerConfiguration": "gdbserver", "args": [], "env": {} }
visualstudio使用完全由gdb或gdbserver支持的visualstudio调试器的前端在远程系统或WSL上进行调试。您可以选择 gdb公司 或 GDB服务器 通过debuggerConfiguration键进行调试。
调试程序配置 :指示要使用的调试默认值集。在Visual Studio 2019版本16.6中,唯一有效的选项是 gdb公司。Visual Studio 2019版本16.7或更高版本也支持 GDB服务器。
gdbserver配置允许其他选项,包括:
GDB路径 :默认为 ${debugInfo.vsInstalledGdb}。到的完整Windows路径 gdb公司 用于调试。默认情况下,指向gdb 用Linux安装开发用C/C++工作负载。
gdbserverPath服务器路径 :默认为 usr/bin/gdbserver。到的完整Unix路径 GDB服务器 用于调试。
我们对gdbserver的一流支持在远程目标上启动gdbserver进程,通过管道将gdbserver stdout和stderr传输到输出窗口,并在任何失败或停止时终止gdbserver进程。我们的网站上有一个完整的附加选项列表 更新的文档 .
注意,我们建议对正常的远程调试场景使用gdb。当目标系统可能没有资源运行完整的gdb时(例如在嵌入式场景中),可以使用Gdbserver。在这种情况下,利用 构建和部署分离 在更强大的Linux系统(或本地WSL)上构建,并使用gdbserver在低功耗设备上进行调试。
在连接管理器中编辑和设置默认远程连接
最后,在VisualStudio2019版本16.7预览版2中,我们添加了在连接管理器中编辑和设置默认远程连接的功能。这个 连接管理器 在visualstudio中,您可以管理和存储到远程系统的安全SHH连接。
您现在可以编辑已建立的远程连接(例如,如果目标设备的IP地址已更改),而无需删除原始连接。这意味着visualstudio将不需要为远程系统上的编译器重新复制include目录,这些目录将自动复制到Windows以提供本机IntelliSense体验。您可以在我们的 最近的博客文章 .
您还可以将默认远程连接设置为与CMakeSettings.json中的宏${defaultRemoteMachineName}和CMake项目中的launch.vs.json一起使用。这将使您能够将这些文件签入源代码管理,而无需任何特定于用户或计算机的配置详细信息。
给我们你的反馈
下载 Visual Studio 2019版本16.7预览版2 今天就来试试。我们很乐意收到您的来信,帮助我们确定优先级并为您构建合适的功能。我们可以通过以下评论联系到您, 开发者社区 , 还有推特( @视觉 ). 提交bug或建议特性的最佳方法是通过开发者社区。