使用Visual Studio调试Core Dump

subtitle 漫漫开发路 09-19 18:13

Linux Core Dump不再可怕

从Visual Studio 2019 v16.8 Preview 3开始,我们添加了在WSL(Windows Subsystem for Linux)或者远程Linux系统上进行Linux Core Dump的调试支持。这项支持仅针对非托管代码进行”本机”调试。

据我们所知的,有一些开发团队主要是在Windows开发他们的系统,但是会同时在Windows和Linux(或者,只在Linux)上部署,然后通过CI(持续集成)系统来收集和Linux相关的错误。

这项新添加的特性,可以让你的调试生活更加容易:你可以在你熟悉的环境下调试Linux应用程序的崩溃错误。有了这玩意,妈妈再也不用担心碰到Core dump了。

使用的方法十分简单,在主菜单中选择:[Debug > Other Debug Targets > Debug Linux Core Dump with Native Only…],请注意,这个菜单项只有在你安装了[Linux development with C++]工作及时才可用。如下图所示:

打开网易新闻 查看更多图片

在接下来的对话框中,会显示调试会话的配置界面,如下图所示:

你也可以在WSL或者远程Linux上调试,但是需要在目标系统上安装有GDB。

下面我们简单的来介绍一下这个对话框的各个属性。

调试WSL(Debug on WSL)

如果这个勾选框被勾选,则Visual Studio会尝试在默认的WSL发行版上寻找Core Dump文件并启动调试会话。这个选项借助于我们对WSL的本机支持,而且无需安装SSH。

调试远程Linux系统(Remote Debug Machine)

如果上面的[Debug on WSL]没有被被勾选,则Visual Studio会在这个选项指定的远程系统上寻找Core Dump文件并启动调试会话。在下拉列表中会列出已经建立的SSH连接。你可以在[Tools > Options > Cross Platform > Connection Manager]中添加一个新的远程连接。

Core Dump文件(Core Dump File)

这个选项指定一个在目标系统存在的Core Dump文件路径。

程序(Program)

这个选项指定产生Core Dump文件的可执行文件。如果你正在WSL上调试并且你的Core Dump和可执行文件都在Windows的文件系统,则你可以通过将本地磁盘挂载到/mnt目录(例如:/mnt/c/Users…)的方式来从WSL中访问这些文件。

源文件(Sources)

这是一个可选项,主要用来指定在Windows上对应的源文件所在的根目录。如果你希望进行源码级调试,则这个选择十分有用。请按照=格式进行设置。另外,可以通过分隔符填入多个条目。

共享库搜索路径(Shared Library Search Path)

一个可选的调试符号搜索路径(会被转换为GDB对应的solib-search-path属性)。

你不需要创建一个Linux配置的CMake工程或一个基于MSBuild的Linux工程就可以使用这个功能。
但是要注意的是,如果你打开了一个Linux工程,则Visual Studio将会自动在Program选项中填入对应的信息。如果你有多个编译目标,则Visual Studio会自动填入它能找到的第一个目标。

总结

我一直不太会使用GDB来调试代码,可能是被Visual Studio养成了一个巨婴吧。
碰到Core dump,一般就直接啃代码了(GDB不会啊[摊手])。有了今天的这个玩意,感觉这生活还是可以值得期待的。
生产环境里出毛病了? 直接上Visual Studio源码级调试:”还是原来的配方,还是同样的味道。”

最后

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

特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.
打开网易新闻,阅读体验更佳
大家都在看