Я нахожусь в корпоративной среде (что означает, что априори нет возможности добавлять красивые принтеры или изменять программное обеспечение на любом уровне), используя GDB (gdbserver) для отладки приложения с использованием Qt на другом устройстве.
Во время отладки мне обычно нужно проверять значения структуры Qt, такой как QMap, которая имеет QString в качестве ключа.
Кажется, у меня есть такая карта:
QVariantMap map;
Теперь, во время отладки, это происходит:
(gdb) p dataMap.value()
Too few arguments in function call.
(gdb) p dataMap.value("first")
Cannot resolve method QVariantMap::value to any overloaded instance
(gdb) p dataMap.value("first", QVariant(""))
A syntax error in expression, near `(""))'.
Согласно документации QMap, как 2-й, так и 3-й опции должны работать.
Это довольно раздражает, так как я хотел бы иметь возможность проверять значения карты без изменения моего кода.
Мне кажется, что есть какое-то недопонимание между GDB и Qt.
Любая помощь будет оценена по достоинству.
ИЗМЕНИТЬ:
Как указал Mohammed, gdb не должны понимать преобразование из const char *
в QString
.
Однако это не имеет никакого значения, поскольку при использовании QString("")
я получаю ту же ошибку, что и в третьей команде исходной части с QVariant("")
.
(gdb) p params.value(QString("deliveryLimit"))
A syntax error in expression, near `"deliveryLimit"))'
В данном случае это QHash, но это не должно быть важно, так как я ищу способ отлаживать контейнеры значений Qt в целом.
const char *
? В любом случае, это вопрос мнений. Если бы я мог, я бы определенно использовал VS - person jjimenezg93   schedule 21.02.2017