第一次使用VS2015社区版,发现对vector变量的监视不能看到内容,而是看到一些列指针:
查资料发现是本地可视化原生类型不支持监视vector的内容,需要修改可视化文件natvis.
方法:解决方案管理器中右击项目->添加->新建项->Visual C++->实用工具->调试可视化工具(.natvis)。把下面的代码粘贴上去就可以了。
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="std::vector<*>">
<DisplayString>{{ size={_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst} }}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst</Item>
<Item Name="[capacity]" ExcludeView="simple">_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst</Item>
<ArrayItems>
<Size>_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst</Size>
<ValuePointer>_Mypair._Myval2._Myfirst</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
类似的,还有很多本地类型无法监视,如一些容器类,自定义类等,都是视图本地化的问题,用natvis还有很多实用的作用,详细参考MSDN官方的两篇博客。
https://blogs.msdn.microsoft.com/vcblog/2015/09/28/debug-visualizers-in-visual-c-2015/
https://msdn.microsoft.com/en-us/library/jj620914.aspx
补充一个最新的解决方法:安装VS2015的update2或者update3,这个问题在这两个补丁中已经解决了。