在调试中构造C ++类的详细信息

时间:2018-10-07 21:04:43

标签: c++ class debugging cross-platform c++17

如何增强C ++类显示的调试信息?具体来说,让我们看一下vector类:其顶层视图仅包含其大小变量(图像中为#1),展开后的视图将其元素逐一显示为参数,因此说(图片中的#2)

如何控制顶级摘要中显示的内容以及子级别中显示的内容?有某些设计模式可以实现这一目标吗?

编辑:是否存在跨平台解决方案?一种适用于Linux下的CLion,Win上的VS,一般情况下的CMake等。

一个复制向量行为的小型工作示例将非常有用(如果甚至有可能不必复制实际向量类的复杂性质)。

screenshot


说,我尝试编写一个如下的类

template <class T> class Vector
{
public:
    Vector(size_t size) : size(size)
    {
        buffer = new T[size];
        for (size_t i = 0; i < size; ++i)
            buffer[i] = T();
    }

    ~Vector()
    {
        if (buffer != NULL)
            delete[]buffer;
    }

    T operator[](const size_t& idx) { /* ... */ }

private:
    size_t size;
    T* buffer;
};

然后,调试器仅向我显示此内容(就像人们期望的那样,查看类的结构): enter image description here

1 个答案:

答案 0 :(得分:1)

您可以创建Natvis可视化文件。详细信息太长,无法进入此处,但是请参阅Microsoft文档,以了解如何Create custom views of native objects in the Visual Studio debugger来创建它们。