我需要将智能指针用于具有多个类别的应用程序。在调试代码时,一个困难是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<*>">
<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<*>">
<SmartPointer Usage="Minimal">_Mypair._Myval2</SmartPointer>
<DisplayString Condition="_Mypair._Myval2 == 0">empty</DisplayString>
<DisplayString Condition="_Mypair._Myval2 != 0">_Mypair._Myval2</DisplayString>
</Type>
</AutoVisualizer>