VS2015调试时无法查看变量值问题原因及解决方案

问题

使用VS2015调试项目时发现,无法查看stl里string,vector等容器里面的值了。如图所示:
在这里插入图片描述
显然这是不正常的,因为VS官方文档里的debugger是这样的
在这里插入图片描述
正常情况的debugger是这样的
在这里插入图片描述

问题产生的原因

看了很多博客除去VS设置的原因,最大的可能就是跟C:\Program Files (x86)\Microsoft Visual Studio14.0\Common7\Packages\Debugger\Visualizers、stl.nativs 文件有关啦。 
vs在安装时,STL中的类都有默认的显示方案,大概就是上面这张正常debugging图中的效果。既然是默认效果,那为什么我的vs还会有显示问题?其实这是vs 社区版update3的一个bug。bug产生的原因如下:.natvis文件时XML文件,所以正常是需要加上验证的,这个验证文件在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Schemas\1033\natvis.xsd。但是vs2015社区版update3的这个文件不知道为什么使用的是vs2015RTM版本的xsd文件。导致,vs默认的stl.natvis文件中的一些定义不无通过验证,相应的内容就无法生效,在vs看来相应的内容就只能用raw_data的形式显示。这个问题会在下个版本中解决,目前只能等。

解决方法

省时省力,点击下面链接,然后在你的项目下添加一个新建项,将链接文件内容复制进去。或者直接替换stl.natvis原文件
https://download.csdn.net/download/Hugoui/35073547
在这里插入图片描述

大家也可以自己尝试去确认bug的原因,
在vs中可以设置以原始数据的形式查看。“工具”->“选项”->“调试”->“常规”下可以设置“在变量窗口中显示对象的原始数据”,如果希望.natvis生效,需要把这一项取消。然后在“工具”->“选项”->“调试”->“输出窗口” 中的Natvis诊断消息(仅限c++)调为“详细”。就可以看到.natvis文件的报错信息。
在查看STL(以vector为例)对象时,可以查看output窗口,如果.natvis文件解析异常,会报错。在修改了.natvis文件后可以在watch窗口中执行.natvisreload命令重新加在.natvis文件(直接Ctrl+s 好像也行)。

关于创建自定义debugger视图

可以参考官方文档:链接: link.
关于stl.natvis文件,如果需要修改stl.natvis,请注意vs使用的stl版本,不同版本stl对容器元素的声明会不一样。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值