【问题标题】:Custom views of smart pointer objects in visual studio?Visual Studio中智能指针对象的自定义视图?
【发布时间】:2016-12-16 02:57:44
【问题描述】:

我需要为具有多个类层次结构的应用程序使用智能指针。调试代码时的一个困难是在 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> 

【问题讨论】:

    标签: c++ visual-studio c++11 smart-pointers unique-ptr


    【解决方案1】:

    我不是专家,但您似乎可以简单地删除 &lt;Expand&gt; 节点,然后将第二个 &lt;DisplayString&gt; 更改为仅显示 _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>
    

    【讨论】:

    • 是的,正如你所说。非常感谢您的回答。
    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多