Пользовательский визуализатор отладки LLDB для типов QtC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский визуализатор отладки LLDB для типов Qt

Сообщение Anonymous »


Я пытаюсь визуализировать QJsonArray (среди многих других типов) и пытаюсь получить данные элемента, которые не являются простыми типами. Например, вложенные массивы.

класс qJsonArray_SyntheticProvider: def __init__(self, valobj, Internal_dict): self.valobj = валобж защита num_children(self): пытаться: s = self.valobj.EvaluateExpression("size()").GetValueAsUnsigned(0) вернуть с кроме: вернуть 0; защита get_child_index(сам,имя): пытаться: return int(name.lstrip('[').rstrip(']')) кроме: возврат Нет защита get_child_at_index(сам,индекс): если индекс < 0: возврат Нет если индекс >= self.num_children(): возврат Нет если не self.valobj.IsValid(): возврат Нет пытаться: element_type = self.valobj.EvaluateExpression("at(%d).type()" % index).GetValueAsUnsigned(0) если тип_элемента == 1: element = self.valobj.EvaluateExpression("at(%d).toBool(false)" % index) элиф element_type == 2: element = self.valobj.EvaluateExpression("at(%d).toDouble(0)" % index) элиф element_type == 3: element = self.valobj.EvaluateExpression("at(%d).toString()" % index) элиф element_type == 4: # не работает -> тип массива element = self.valobj.EvaluateExpression("at(%d).toArray()" % index) элиф element_type == 5: # не работает -> тип объекта element = self.valobj.EvaluateExpression("at(%d).toObject()" % index) еще: возврат Нет возврат (self.valobj .CreateValueFromData("[%d]" % индекс, element.GetData(), element.GetType())) кроме: возврат Нет пример кода на C++:

QJsonArray arr; arr.push_back(1); arr.push_back("тест"); QJsonArraynested_arr; вложенный_arr.push_back(3); arr.push_back(nested_arr); Есть ли более простой способ сделать это? Я не уверен, что EvaluateExpression — правильный переход, но я не знаю, как получить данные другим способом.

Результат (обратите внимание, что третий элемент отображается как пустой массив):
Изображение


пс. это также происходит с пользовательскими типами (не Qt), у которых нет поля, а есть только свойство getSomething().

редактировать: это поставщик сводных данных:
def qjsonarray_summary(значение, не используется): num_elements = value.EvaluateExpression("size()").GetValueAsUnsigned(0) return "(%d elements)" % num_elements
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать пользовательский визуализатор отладки в Clion для сложного контейнера?
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как создать пользовательский визуализатор отладки в Clion для сложного контейнера?
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Визуализатор отладки Rider для таблиц данных, как в Visual Studio, в виде таблицы.
    Anonymous » » в форуме C#
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Код Visual Studio LLDB при ошибке macOS при запуске сеанса отладки
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • LLDB запускает сценарий отладки Python. Я получаю ошибку: неверный поток
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»