Visual Studio中智能指针对象的自定义视图

Custom views of smart pointer objects in visual studio?

本文关键字:自定义 视图 对象 指针 Studio 智能 Visual      更新时间:2023-10-16

我需要将智能指针用于具有多个类别的应用程序。在调试代码时,一个困难是Visual Studio 2015的手表窗口内的智能指针(例如unique_ptr)的视图。它总是同时显示[ptr][deleter][Raw View],而我主要关心快速看到[ptr]的内容。扩展指针的视图。是否有一种方法可以使调试变得更加容易,并自定义显示智能指针内容的视图与Visual Studio 2015中的原始指针相同?我知道应该使用适当的navisfile可以做到这一点,但是我不知道如何修改以下navisfile以显示[ptr]的内容?

<?xml version="1.0" encoding="utf-8"?> 
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 
  <Type Name="std::unique_ptr&lt;*&gt;">
      <SmartPointer Usage="Minimal">_Mypair._Myval2</SmartPointer>
      <DisplayString Condition="_Mypair._Myval2 == 0">empty</DisplayString>
      <DisplayString Condition="_Mypair._Myval2 != 0">unique_ptr {*_Mypair._Myval2}</DisplayString>
      <Expand>
          <Item Condition="_Mypair._Myval2 != 0" Name="[ptr]">_Mypair._Myval2</Item>
      </Expand>
  </Type>

</AutoVisualizer> 

我不是专家,但是您似乎可以简单地删除<Expand>节点,然后更改第二个<DisplayString>以仅显示_Mypair._Myval2,例如:

<?xml version="1.0" encoding="utf-8"?> 
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 
  <Type Name="std::unique_ptr&lt;*&gt;">
      <SmartPointer Usage="Minimal">_Mypair._Myval2</SmartPointer>
      <DisplayString Condition="_Mypair._Myval2 == 0">empty</DisplayString>
      <DisplayString Condition="_Mypair._Myval2 != 0">_Mypair._Myval2</DisplayString>
  </Type>

</AutoVisualizer>