VS2015 调试stl vectory 不显示数据

VS 2015不显示相关的调试数据,只有原始的内存数据,这是由于在VS以后的新版本加入一个新的功能,能够自定义设置相关的数据显示格式,而在VS2015中相关的显示格式没有像VS2013等前期版本的那样作。ide

1、现象

最近使用vs2015调试C++程序,结果发现了一个很奇怪的问题:调试时没法查看stl里面string,vector,list等容器类的值了,以下图所示,调试时把鼠标移动到“str”这个变量上面,结果发现显示“str|{…}”,没法显示str的值了。
在这里插入图片描述
正常状况下调试时应该显示“hello world”才对,以下图所示:
在这里插入图片描述工具

2、问题产生的可能缘由

       问题发生的缘由极可能跟XXX.natvis文件有关,在vs2012以上的版本,提供了.natvis可视化工具设计来为不一样类型的
C/C++ 类型声明自定义可视化。可视化的类型改变了对象在本地表达式计算器的显示方式,包括在监视和变量窗口以及
调试数据提示。spa

3、找到问题产生的缘由:

       首先,在“工具”->“选项”->“调试”->“常规”中把“使用托管兼容模式”和“使用本机兼容性模式”前面的勾去掉,不然可能没法使用natvis文件,以下图所示:
在这里插入图片描述
若是没有加载成功,或者没有预计的内容,能够按第二步设置来肯定问题产生的缘由。
     第二步,在“工具”->“选项”->“调试”->“输出窗口”->“Natvis诊断消息(仅限C++)”,这里选择“详细”,(默认是“关闭”)。以下图所示:选择了“详细”咱们才能在调试时发现是不是由于natvis文件不正常致使没法看到变量的值。
在这里插入图片描述
点击“调试”->“开始调试”,而后“调试”->“所有终止”,而后咱们能够在“输出窗口”这里找到问题产生的缘由debug


下面是我本身用的natvis文件,主要用于显示vector设计

<?xml version="1.0" encoding="utf-8"?>

<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

<Type Name="std::vector&lt;*&gt;">
  <DisplayString>{{ size={_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst} }}</DisplayString>
  <Expand>
      <Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst</Item>
      <Item Name="[allocator]" ExcludeView="simple">_Mypair</Item>
      <ArrayItems>
            <Size>_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst</Size>
          <ValuePointer>_Mypair._Myval2._Myfirst</ValuePointer>
      </ArrayItems>
  </Expand>
</Type>
</AutoVisualizer>

把上面的代码复制后,保存为natvis文件,而后在vs的资源选项卡加,加载现有资源,把这个natvis文件加载上便可。调试

其余位置的natvis文件

* 特定于用户的 natvis 目录xml

  (%USERPROFILE%\My Documents\Visual Studio 2015\Visualizers)

默认是最后的Visualizers目录是不存在,须要新建一个目录哈对象

  • 系统级 Natvis 目录
(%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers)。

这就是复制随 Visual Studio 一块儿安装的 .natvis 文件的位置。 若是具备管理员权限,则也能够向此目录添加其余文件

微软的natvis的说明:
https://docs.microsoft.com/zh-cn/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2015blog

相关文章
相关标签/搜索