zoukankan      html  css  js  c++  java
  • VS2015 调试stl vectory 不显示数据

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

    一、现象

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

    二、问题产生的可能原因

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

    三、找到问题产生的原因:

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


    下面是我自己用的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 目录

      (%USERPROFILE%My DocumentsVisual Studio 2015Visualizers)
    

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

    • 系统级 Natvis 目录
    (%VSINSTALLDIR%Common7PackagesDebuggerVisualizers)。
    

    这就是复制随 Visual Studio 一起安装的 .natvis 文件的位置。 如果具有管理员权限,则也可以向此目录添加其他文件

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

  • 相关阅读:
    vue.js---利用vue cli脚手架工具+webpack创建项目遇到的坑
    List<KeyValuePair<TKey,TValue>> 与 Dictionary<TKey,TValue> 不同
    StackExchange.Redis 官方文档(一) Basics
    离线安装chrome插件
    Cocoapods的安装与使用
    多线程
    作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序
    初学者如何在博客园发布博客
    作业一:建立博客、自我介绍、速读教材、学习进度总结
    计科131同学们的博客
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12537658.html
Copyright © 2011-2022 走看看