在 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&lt;*&gt;">
  <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 FourCC 可视化语法

Natvis FourCC可视化语法

设计模-设计原则-开闭原则

如何用natvis可视化一个简单的std :: string?

在 VSCode/Natvis 中使用 CustomListItems

为 JsonCpp 寻找 Visual Studio 可视化工具(natvis)