c++ - 如何使用 natvis Visual Studio C++ 调试器可视化工具对单一类型进行多个列表扩展

标签 c++ visual-studio visual-c++ visual-studio-debugging natvis

我正在尝试为以 block 的形式存储值的容器制作调试器可视化工具。我想对值和 block 进行列表扩展,但据我所知,单一类型只能有一个列表扩展。可能有多个 Expand 子节点,例如 ArrayItems,但它们都会生成单个列表。 是的,我可以对容器进行 block 扩展,然后对每个 block 进行值扩展。但我想要两个具有如下扩展的容器子节点:

MyList
|-values
| |-0
| |-1
|
|-chunks
| |-0
| |-1

有没有办法使用 natvis xml 来做到这一点?

最佳答案

您可以使用<Synthetic>为了那个原因。里面的代码<Synthetic>例如可以是<Item><ArrayItems> ,还有任何其他项目类型。

<Type Name="MyList">
  <DisplayString>...</DisplayString>
  <Expand>
    <Synthetic Name="values">
      <DisplayString>...</DisplayString>
      <Expand>
        <!-- code for displaying as values -->
      </Expand>
    </Synthetic>
    <Synthetic Name="chunks">
      <DisplayString>...</DisplayString>
      <Expand>
        <!-- code for displaying as chunks-->
      </Expand>
    </Synthetic>
  </Expand>
</Type>

关于c++ - 如何使用 natvis Visual Studio C++ 调试器可视化工具对单一类型进行多个列表扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65446147/

相关文章:

c++ - iostream 迭代器如何工作?

c++ - C++ 中 bool 函数没有引用参数?

wpf - 在 WPF MVVM 中的 View 之间导航

C++ - 如何创建具有 4 个变量和 4 个键的多重映射

c - 我怎样才能摆脱VC中的0xFEEFEE

c++ - 计算失败,因为 - nan

c++ - 你如何访问另一个类中的内部类?

c++ - 您最喜欢/推荐的使用 Boost 进行单元测试的项目结构和文件结构是什么?

c++ - 将 Visual Studio 项目设置复制到新项目吗?

c++ - 为什么建源后没有.dll文件?