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