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

标签 c++ arrays visual-studio debugging

假设类型 T 和长度 size 已知, 如何在调试器中优雅地显示数组数据

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

在监 window 口 (Visual studio 2015) 中,我可以通过键入显示 container.data:-

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

问题他们是否有任何技术(特别是修改Container中的代码)使这个过程变得自动和优雅——比如std::vector?

换句话说,如果我可以只输入 container 就好了,然后 watch 会显示:-

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

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

最佳答案

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

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

关于c++ - 在调试器中自动显示具有已知类型和长度的 void*(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39178623/

相关文章:

php - 在 PHP 中计算数组中的项目

visual-studio - 如何使用 Visual Studio 2010 从源代码构建 MFC 库

c++ - linux下的Boost Semaphores和EINTR返回码

c++ - 合并和快速排序 - 堆栈重载

c++ - 模板参数值中的 Lambda 表达式

visual-studio-2010 - 使用 Visual Studio 的调试器查看动态分配的空终止字符串

asp.net - VS2012 中的 Entity Framework 问题 - 重命名属性不粘

c++ - 如何在 Cython 中返回新的 C++ 对象?

php - 将元素从一个数组移动到另一个数组

C# 静态数组绑定(bind)检查