Visual Studio中智能指针对象的自定义视图?
Posted
技术标签:
【中文标题】Visual Studio中智能指针对象的自定义视图?【英文标题】:Custom views of smart pointer objects in 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<*>">
<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>
【问题讨论】:
【参考方案1】:我不是专家,但您似乎可以简单地删除 <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>
【讨论】:
是的,正如你所说。非常感谢您的回答。以上是关于Visual Studio中智能指针对象的自定义视图?的主要内容,如果未能解决你的问题,请参考以下文章
无论如何在 Visual Studio 智能感知中定义一个未定义的对象?
带有 Dojo/Dijit 的 Javascript 智能感知是 Visual Studio 2008
参数如何传递到 Visual Studio 的自定义构建工具中?
C ++在boost python中使用带有命名空间的自定义智能指针