2016-12-16 60 views
2

我需要使用智能指針的應用程序有幾個層次的類。調試代碼時的一個難點是在Visual Studio 2015的監視窗口內的智能指針(例如unique_ptr)的視圖。它總是同時顯示[ptr],[deleter][Raw View],而我主要關心的是快速查看[ptr]的內容時擴展指針的視圖。有沒有一種方法可以使調試變得更容易,並且可以自定義顯示智能指針內容的視圖,使其與Visual Studio 2015中的原始指針相同?我知道這應該可以通過使用適當的NavisFile來實現,但是我不知道如何修改以下NavisFile來顯示[ptr]的內容?Visual Studio中智能指針對象的自定義視圖?

<?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> 

回答

3

我不是專家,但似乎你可以簡單地刪除<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> 
+0

是的,這可以作爲你說的。非常感謝您的回答。 –