NatVis:允许 typedefs 吗?

Posted

技术标签:

【中文标题】NatVis:允许 typedefs 吗?【英文标题】:NatVis: typedefs allowed? 【发布时间】:2014-03-24 22:49:06 【问题描述】:

我有一个类型定义为:

typedef unsigned short StringChecksum;

我最终打算使用 NatVis 在我们已加载到内存中的全局字符串表中显示相应的值。

所以我定义了一个新的 NatVis 进行测试(这是我的第一次):

<?xml version="1.0" encoding="utf-8" ?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="StringChecksum">
    <DisplayString>StringChecksum this</DisplayString>
  </Type>
</AutoVisualizer>

我在注册表中打开了 NatVis 调试,我可以看到我的 .natvis 文件正在被调试器加载并成功解析。

我还关闭了“编辑并继续”。

但是,当我调试代码并检查 StringChecksum 时,我看不到任何区别,它显示的是整数。我希望它会显示类似“StringChecksum 3433”的内容。

NatVis 是否可以使用从普通 typedef 定义的类型?我见过的所有例子都在使用类。如果是这样,知道可能出了什么问题吗?

【问题讨论】:

【参考方案1】:

答案是否定的。调试器无法分辨出与原始类型的区别。

有趣的是,枚举甚至强类型枚举目前在 VS2012 Update 2 中也不起作用,尽管调试器实际上可以分辨出区别。

【讨论】:

以上是关于NatVis:允许 typedefs 吗?的主要内容,如果未能解决你的问题,请参考以下文章

tslint:我想强制参数 typedef 但允许推断类型

typedef 固定长度数组

Natvis 浮点格式

Rust有相当于C的typedef吗?

如何在 natvis 中传播 ExcludeView/IncludeView?

令人困惑的 typedef 涉及类范围