visual studio 中智能指针对象的自定义视图?

Custom views of smart pointer objects in visual studio?

我需要为具有多个 类 层次结构的应用程序使用智能指针。调试代码的一个困难是智能指针(例如unique_ptr)在2015年Visual Studio的手表windows中的视图。它总是显示[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>