Visual Studio Code C/C++ 扩展12月份的更新

[原文发表地址] December Update for the Visual Studio Code C/C++ extension

[原文发表时间] 2016/12/12

在今年的//Build大会上我们推出了Visual Studio Code的C/C++扩展, 我们将保持每月发行的节奏和目标并不断对您的反馈做出回应。下面将介绍十二月份更新的一些功能:

如果您还没来得及给我们提供反馈,为了这个扩展能够更好的满足您的需要,请您填一下这份快速调查问卷最初的博客中已经更新了这些新功能,现在让我们一起仔细地逐一学习一下它们。

GDB用户的调试器可视界面的默认美观输出

使用美观输出器使GDB的输出更具有可用性,因此使调试更加地容易。美观输出现在可以被预先设置在‘launch.json’文件中的‘setupCommands’部分里,‘-enable-pretty-printing’的标志说明现在美观输出是可用的。这个标志可以传递到GDB MI来开启美观输出。 debug1

为了说明美观输出的优点,让我们来看看下面这个例子。

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
vector<float> testvector(5,1.0);
string str = “Hello World”;
cout << str;
return 0;
}

在一个实时调试会话中,让我们看一下如果没有开启美观输出时‘str’ 和‘testvector’的样子: debug2

现在我们可以看到‘str’ 和‘testvector’的值看起来很隐晦很难懂……

让我们再看一下开启了美观输出时‘str’ 和‘testvector’的值: debug3

现在我们可以感受到这两个值是如此的简单明了!

作为GDB默认分配的一部分,STL容器现在可以选择是否预先定义美观输出。您也可以根据这个页面的指导来创建自己独有的美观输出器。

在调试过程中能够映射到源文件

Visual Studio Code可以在调试的过程中显示出代码文件,它会根据调试器返回的路径作为代码文件的路径。在编译的过程中调试器内嵌了源文件的路径,但是如果您调试一个源文件已经被移除了的可执行文件,那么Visual Studio Code将会跳出一个信息条提示您代码文件找不到。和这个相同的例子就是当您的调试会话发生在和已经编译了的二进制文件位置不同的机器上时,您可以通过‘sourceFileMap’选项来覆盖住调试器已经返回的路径然后用您指定的目录代替它。

 #include "stdafx.h"
#include "..\bar\shape.h"
int main()
{
      shape triangle;
      triangle.getshapetype();
      return 0;
}

让我们设想一下如果编译的目录‘bar’被移除了,这意味着当我们单步执行到‘triangle.getshapetype()’时,映射的源文件‘shape.cpp’将会找不到。这个问题现在被解决了,您可以在您的launch.json文件中通过‘sourceFileMap’选项来实现,如下所示: debug4

我们目前需要包含键和值的完整路径而不是相对路径。您可以使用任何您所喜欢的键/值对。它们已经从第一个到最后一个都被解析了并且它发现第一个也已经匹配了,它将使用替换的值。当输入映射时,最好先从最确定的到最不确定的。您也可以指定一个文件的完整路径来改变映射。

现在升级你的扩展

如果你已经使用了c/c++代码扩展,你可以通过使用扩展标签页快速地更新你的扩展。这将会显示出你当前已经装的需要更新的扩展。在扩展窗口中,通过点击”update”按钮就可以安装更新后的扩展了。

请通过查阅最初发布的博客的链接文档以获得更多关于Visual Studio Code C/C++的全部经验的的信息。请继续体检我们的产品并在Github 页中提交您所遇到的问题,如果你想勾画这个产品的未来,请加入我们Cross-Platform C++ Insiders 群,在那你可以直接和我们对话来使得这个产品更好地满足你的需求。