Структурирование деталей класса C ++ в Debug - PullRequest
0 голосов
/ 08 октября 2018

Как улучшить отладочную информацию, показанную для класса C ++?В частности, давайте посмотрим на класс vector: его представление верхнего уровня содержит только его переменную размера (# 1 на изображении) , а расширенное представление показывает его элементы один за другим в качестве параметров, если можно так выразиться (# 2 на изображении) .

Как контролировать то, что отображается в сводке верхнего уровня, и что показывается на подуровне?Существуют ли определенные шаблоны проектирования, которые достигают этого?

Редактировать: Есть ли кроссплатформенное решение?Тот, который работает для CLion под Linux, VS на Win, 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 голосов
/ 08 октября 2018

Вы можете создать визуализацию Natvis.Подробные сведения слишком длинны, чтобы перейти сюда, но см. Документацию Microsoft о том, как Создать собственные представления собственных объектов в отладчике Visual Studio , как их создавать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...