VS2015调试stl vector不显示数据

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

问题产生的可能原因

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

找到问题产生的原因:

       首先,在“工具”->“选项”->“调试”->“常规”中把“使用托管兼容模式”和“使用本机兼容性模式”前面的勾去掉,否则可能无法使用natvis文件,如下图所示:

 如果没有加载成功,或者没有预计的内容,可以按第二步设置来确定问题产生的原因。
     第二步,在“工具”->“选项”->“调试”->“输出窗口”->“Natvis诊断消息(仅限C++)”,这里选择“详细”,(默认是“关闭”)。如下图所示:选择了“详细”我们才能在调试时发现是否是因为natvis文件不正常导致无法看到变量的值。

 点击“调试”->“开始调试”,然后“调试”->“全部终止”,然后我们可以在“输出窗口”这里找到问题产生的原因。

用于显示vector的natvis文件:

<?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文件加载上即可。或者直接保存在此vs2015的安装目录下:

D:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值