如何在不修改标准容器Natvis的前提下,将自定义类型视图透传到容器内元素
Natvis 自定义展示视图的容器透传问题说明
目前Natvis虽支持为指定类型配置差异化展示视图,但暂未找到无需修改或重写标准容器对应Natvis规则,即可将这些自定义视图透传给容器存储元素的可行实现方案。
配套测试代码
测试使用的C++代码如下:
#include <vector> struct S { double d = 0.123457890; }; int main() { std::vector<S> s(1); }
自定义类型的Natvis规则配置
针对自定义类型S编写的可视化规则如下:
<?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="S"> <DisplayString IncludeView="g">{d,g}</DisplayString> <DisplayString>{d}</DisplayString> </Type> </AutoVisualizer>
预期目标与现存问题
- 预期效果:在Visual Studio监视窗口查看容器实例
s时,系统自动为容器内所有元素应用类型S定义的g视图完成统一展示。 - 现存障碍:目前已尝试的方案,仅能在逐行手动向监视窗口输入单个
S类型元素时生效,面对长数组、长容器的实际使用场景完全不具备实操可行性,调试表现和预期存在明显差距。
内容的提问来源于stack exchange,提问作者jesses
相关产品推荐
相关产品推荐

