在调试器中自动显示已知类型和长度的void *(数组)

时间:2016-08-27 07:30:10

标签: c++ arrays visual-studio debugging

假设类型T和长度size已知, 如何在调试器中正常显示数组data

template<class T>class Container{
    void* data;  //<-- display it!
    int size;
}

在观察窗口(Visual Studio 2015)中,我可以通过输入以下内容显示container.data: -

static_cast<T*>(container.data),size    

问题:它们是否是任何技术(尤其是修改Container中的代码)以使此过程自动且优雅 - 例如std :: vector?

换句话说,如果我只需输入container就可以了,那么手表会显示: -

container
+data           (the + button, can click to expand)
--data[0]       (expanded)
--data[1]
......
--data[size-1]

我最好的线索是使用union,但我不确定。

1 个答案:

答案 0 :(得分:2)

VS2015允许通过自定义.natvis配置进行调试可视化自定义。

在其他功能中,它支持模板化类。 Name元素的Type属性接受星号*作为可用于模板化类名的通配符。要在可视化条目中引用模板参数,您可以使用$T1宏。示例位于VS2015 Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers文件夹中。