用于在VisualStudio2019中调试远程系统和WSL上的CMake项目的新模板

我们听到您的反馈,在远程Linux系统或Windows Linux子系统(WSL)上配置调试会话可能很困难。在 Visual Studio 2019版本16.6预览版2 我们引入了一个新的调试模板来简化gdb的调试。

null
  • 所有现有调试配置(类型 cppdbg公司 )将按预期继续工作。
  • 类型的新模板 cppgdb公司 无论何时添加 新的 Linux或WSL调试配置。
  • 您可以通过查看我们的更新文档来阅读新模式的完整描述: https://aka.ms/vslinuxdebug . 继续阅读新模板的概述和远程调试常见问题解答。
  • 注意:在Visual Studio 2019版本16.6 Preview 2中,您需要手动将配置类型设置为cppgdb。这个 错误已在预览3中修复 .

新的cppgdb模板

我们听到您的反馈,旧的调试配置太冗长、太混乱,而且没有很好的文档记录。新的 cppgdb公司 配置已简化,如下所示:

{
  "type": "cppgdb",
  "name": "My custom debug configuration",
  "project": "CMakeLists.txt",
  "projectTarget": "DemoApp.exe",
  "comment": "Learn how to configure remote debugging. See here for more info http://aka.ms/vslinuxdebug",
  "debuggerConfiguration": "gdb",
  "args": [],
  "env": {}
}

新的设置 调试程序配置 指示要使用的调试默认值集。在Visual Studio 2019版本16.6中,唯一有效的选项是 gdb公司 .

可以为调试场景添加和配置更多可选设置,如 GDB路径 (gdb路径), cwd公司 (运行程序的工作目录的路径),以及 预调试命令 (一个新设置,允许Linux命令在启动调试器之前运行)。这些设置及其默认值的完整列表列在我们的 文档 .

接下来是:对gdbserver的一流支持

在Visual Studio 2019版本16.5或更高版本中,可以手动将launch.vs.json配置为 使用gdbserver调试CMake项目。 在visualstudio即将发布的版本中,我们将添加对 GDB服务器 到新的 cppgdb公司 模板。这将允许您通过 调试程序配置 设置并轻松自定义gdbserver的路径或gdb的本地路径。

远程调试方案常见问题

关于Linux和WSL上的调试,我们经常会遇到一些问题。下面列举了其中一些例子。

如何将参数传递给正在调试的程序?

启动时传递给被调试程序的命令行参数配置为 参数 数组。例子:

"args": ["arg1", "arg2"],

如何设置环境变量?是否需要重新设置在CMakeSettings.json中设置的环境变量?

在Visual Studio 2019版本16.5或更高版本中,将使用CMakeSettings.json中指定的环境自动启动调试目标。可以使用语法“${env.variableu NAME}”引用CMakeSettings.json中定义的环境变量(例如用于路径构造)。也可以通过将CMakeSettings.json中定义的变量设置为null来取消设置。

下面的示例将新的环境变量(DISPLAY)传递给正在调试的程序,并取消设置在CMakeSettings.json中指定的环境变量(DEBUGu LOGGINGu LEVEL)。

"env": {
        "DISPLAY": "1.0",
        "DEBUG_LOGGING_LEVEL": null
      },

注意:cppdbg类型的旧Linux/WSL配置取决于“ “环境” 语法。这种替代语法在我们的 文档 .

我想将构建的系统与调试的系统分开。我该怎么做?

构建系统(WSL安装或远程系统)在CMakeSettings.json中定义。远程调试系统由键定义 远程机器名 在launch.vs.json中。

默认情况下,launch.vs.json中remoteMachineName的值与生成系统同步。此设置 只需要改变 指定新调试系统时。在launch.vs.json中更改remoteMachineName值的最简单方法是使用IntelliSense(ctrl+space)查看所有已建立远程连接的列表。

IntelliSense in launch.vs.json prompts you with all of your existing connections defined in the Connection Manager.

还有其他几个(可选)部署设置可用于配置我们的示例中列出的构建和调试分离 文档 .

我想直接与底层调试器交互。我能做这个吗?

Visual Studio允许您 执行自定义gdb命令 通过命令窗口。为此,

  • 视图>其他窗口>命令窗口
  • 运行:Debug.MIDebugExec在此处插入gdb命令

我正在用gdb或gdbserver进行调试,但有些东西不起作用。如何排除故障?

你可以 启用日志记录 查看我们发送给gdb的命令、gdb返回的输出以及每个命令花费的时间。

  • 视图>其他窗口>命令窗口
  • 运行:Debug.MIDebugLog(/On[:]|/Off)[/OutputWindow]

选项:

  • /打开[:]–打开MIEngine日志记录。(可选)指定包含日志的文件。必须提供文件,或者必须显示“/OutputWindow”选项。
  • /关闭-关闭MIEngine日志记录。如果登录到文件,则该文件将关闭。
  • /OutputWindow-记录到输出窗口中的“调试”窗格。

给我们你的反馈

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

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