LINUX.ORG.RU

Qt Creator: какую прописать конструкцию, что бы мой класс в отладчике показывал нужную мне информацию?

 


2

4

Вот сижу пишу программку в среде QtCreator. Написал свой утилитный класс. И можно ли что бы в процессе отладки в просмотре переменных он мне показывал нужную мне инфу, а не указатель на класс? Как у других классов встроенных в Qt.

Ответ на: комментарий от invy

Не, не хочется лезть в member variable и еще ее добавлять. Вот скажем есть QString, вы же не лезете в его QStringData что бы увидеть какая в нем строка? А еще справа открывается окошко со всеми переменными текущей функции, очень удобно, только для моих классов приходится там разворачивать до member variable, что бы увидеть что там внутри, что не есть удобно.

victor79
() автор топика
Ответ на: комментарий от anonymous

Спасибо, очень помогло.

Есть у меня простенькие классы по обезопасиванию использования чисел на некорректные или забытые значения, для примера:

template <class T>
class OnlyConst {
private:
    T value;
public:
    OnlyConst() : value( SafeNum<T>::invalid() ) {}
    template <class S> OnlyConst(const S& v) : value( (T)v ) { SafeNum<T>::assert_if_invalid(value); }

    operator T() const {
        SafeNum<T>::assert_if_invalid(value);
        return value;
    }

    template <class S> void operator=(const S& oth) { *this = (T)oth; }

    void operator=(T v) {
        SafeNum<T>::assert_if_invalid(v);
        SafeNum<T>::assert_if_valid(value);
        value = v;
    }
};

typedef OnlyConst<double> CoDbl;
typedef OnlyConst<quint32> CoInt;

В результате, я создал файлик debugVisualizer.py, в котором написал:

#!/usr/bin/python
def qdump__OnlyConst(d, value):
    d.putValue(value["value"])
    d.putNumChild(0)
подключил его в «Инструменты/Параметры/Отладчик/GDB/Дополнительные помощники отладчика», и мой класс стал в Qt отладчике отображаться по значению числа, а не указателю на объект.

Отображение меняется при редактировании питоновского файла и перезапуске отладки, без перезапуска Qt.

Судя по описанию, эта технология поддерживается любым IDE которая использует gdb.

victor79
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.