大道至简调试远程系统和WSL的新模板来了

更新要点有些开发者朋友向我们抱怨说:在对远程Linux主机或者WSL(WindowsSubsystemforLinux)进行调试时所需要做的配置还是比较麻烦。我们听到了。现在,在VisualStudiov16.6Preview2中,我们引入了一个新模板,用来简化GDB调试工作。要点如下:现有的所有调试配置(关于cppdbg)都可以一如既往地正常使用。当你添加一台新的Linux主机或者WSL的调试配置时,cppgdb的新模板将会默认被使用。你可以通过阅读调试器帮助文档了解有关新模板的所有架构(schema)信息,这其中比较重要的两点是:新模板的概述(Overview)和有关远程调试的常见问题(FAQ)。注意:在VisualStudiov16.6Preview2中,你还需要手动地设置配置类型(将调试类型手动调整为cppgdb)。关于新的cppgdb模板有些开发者觉得旧的调试配置太过详细,容易让人感到困惑,并且没有对应的文档。由此,我们添加了一个新的cppgdb模板,并将配置项做了相当的简化,如下图所示:新的设置项[debuggerConfiguration]指定默认情况下使用哪种调试工具。在VisualStudiov16.6中,我们只能将它配置为gdb,因为目前只有它被支持。当然,还有一些其他的可选配置可以添加到调试配置中,例如gdbPath:用来指向gdb的路径cwd:用来指向程序运行目录preDebugCommand:这是一个新的配置项,用来允许Linux指令可以在调试器启动之前运行。关于所有配置项和其配置的默认值,大家可以阅读帮助文档。接下来:对gdbserver的顶级支持在VisualStudiov16.5及以上版本中,你可以手动配置[launch.js]来使用gdbserver来调试CMake工程。在即将到来的新VS版本VS版本中,我们将对gdbserver提供顶级支持,从而使用我们新的cppgdb模板。这样你就可以通过[debuggerConfiguration]来选择gdbserver并轻松配置gdbserver的路径或者指向gdb的本机路径。有关远程调试场景的常见问题我们经常收到一些关于Linux和WSL调试的问题,下面是一些比较常见的问题。如何向被调试的程序传入参数?可以通过[args]数组来向被调试程序传递命令行参数,如下所示:如何设定环境变量?需要将我在CMakeSettings.json设定的变量重新设定到环境变量中吗?在VisualStudiov16.5及以上版本中,在CMakeSettings.json中指定的调试目标将会被自动启动。你可以将CMakeSettings.json定义的变量当作环境变量来使用(例如,构建路径等),其语法为:”${env.VARIABLE_NAME}”。你也可以通过将CMakeSettings.json中变量的值设置为null来取消变量的定义。下面的例子演示了将一个新的环境变量(DISPLAY)传入到被调试程序,同时将CMakeSettings.json中定义的DEBUG_LOGGING_LEVEL设置为了null。注意,旧的Linux/WSL的cppdbg配置依赖”environment”这一语法。我希望在一台机器上编译,在另一台机器上调试,应该怎么做?在CMakeSettings.json可以指定编译系统(例如一个WSL安装或者一台远程Linux主机)。远程调试系统可以通过修改launch.vs.json配置文件中的[remoteMachineName]。默认情况下,[remoteMachineName]的值被同步为你的编译系统。只有当你需要在另一台系统上调试的时候才需要配置这个参数。最简单的修改这个参数的方法是使用IntelliSense(Ctrl+空格)来显示一个远程连接的列表并从中选择一个。如下图所示:还有另外一些可选的部署参数可以被用来分离编译系统和调试系统,具体请参考文档。我希望能直接和底层的调试器进行交互,可以这样做吗?VisualStudio可以通过命令窗口(CommandWindow)来执行一些自定义的GDB命令。方法如下:打开路径:视图–其他窗口–命令窗口执行:Debug.MIDebugExec你需要执行的GDB命令我在使用GDB或者GDBServer时碰到了一些问题,应该如何进行troubleshooting呢?可以通过[启用日志]来查看传送给GDB的所有命令,以及GDB的输出和每项命令的执行时间。打开路径:视图–其他窗口–命令窗口执行:Debug.MIDebugLog(/On[:]

/Off)[/OutputWindow]选项说明:/On[:]:启用MIEngine日志。可选地指定一个用于保存日志的文件。必须指定文件名或者必须使用”/OutputWindow”选项。/Off:禁用MIEngine日志。如果将日志写入到文件,则这个文件将会被关闭。/OutputWindow:将日志输出到输出窗口(OutputWindow)。总结通过使用新的模板,在远程Linux主机或者WSL上进行调试将是一件令人赏心悦目的事情。


转载请注明:http://www.aierlanlan.com/rzfs/7378.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了