教你使用Visual Studio调试Linux Core Dump
扫描二维码
随时随地手机看文章
Linux Core Dump不再可怕
从Visual Studio 2019 v16.8 Preview 3开始,我们在WSL(Linux的Windows子系统)或远程Linux系统上添加了对Linux Core Dump的调试支持。 此支持仅适用于非托管代码的“本机”调试。
据我们所知的,有一些开发团队主要是在Windows开发他们的系统,但是会同时在Windows和Linux(或者,只在Linux)上部署,然后通过CI(持续集成)系统来收集和Linux相关的错误。这项新添加的特性,可以让你的调试生活更加容易:你可以在你熟悉的环境下调试Linux应用程序的崩溃错误。有了这玩意,妈妈再也不用担心碰到Core dump了。
使用的方法十分简单,在主菜单中选择:[Debug>OtherDebugTargets>DebugLinuxCoreDumpwithNativeOnly…],请注意,这个菜单项只有在你安装了[LinuxdevelopmentwithC++]工作集时才可用。如下图所示:
在接下来的对话框中,会显示调试会话的配置界面,如下图所示:
你也可以在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》