在 natvis 可视化器的第一个扩展级别上扩展模板类型的成员
Posted
技术标签:
【中文标题】在 natvis 可视化器的第一个扩展级别上扩展模板类型的成员【英文标题】:Expand members of templated type on first expansion level of natvis visualiser 【发布时间】:2014-05-08 16:17:18 【问题描述】:VS2013 中shared_ptr
的默认可视化工具有这个(很多很多东西都被剪掉了!):
<Type Name="CA::shared_ptr<*>">
<Expand>
<Item Condition="_Ptr != 0" Name="[ptr]">_Ptr</Item>
</Expand>
</Type>
这意味着在调试器中您必须展开 shared_ptr
然后展开 [ptr]
'member' 以查看指向对象的成员。指向 int 的指针的层次结构看起来像(忽略原始视图、分配器和删除器):
myIntPtr
[ptr]
42
我想写一个替换,将所有指向对象的成员放在一个级别上,以位于 [ptr]
当前所在的层次结构中的级别。相反,它看起来像:
myIntPtr
42
是否有一些语法允许这样做?我应该注意,我正在寻找支持显示所有模板参数成员的通用语法,而不是仅适用于 shared_ptr
的语法 - shared_ptr
只是一个方便的示例。
【问题讨论】:
【参考方案1】:我认为这就是“ExpandedItem”标签的好处。他们甚至举了一个和你类似的例子。见这里:http://msdn.microsoft.com/en-us/library/jj620914.aspx#BKMK_ExpandedItem_expansion
【讨论】:
看来你是对的!我不再有权访问代码和 natvis 文件,因此无法在该上下文中对其进行测试,但文档看起来确实很准确!谢谢!以上是关于在 natvis 可视化器的第一个扩展级别上扩展模板类型的成员的主要内容,如果未能解决你的问题,请参考以下文章
如何用natvis可视化一个简单的std :: string?