Отладка утверждается в Qt Creator - PullRequest
19 голосов
/ 21 января 2010

Когда я нажимаю на нормальный оператор assert во время отладки в Visual Studio, я получаю возможность прорваться в отладчик, чтобы увидеть всю трассировку стека и локальные переменные, а не только сообщение assert.

Возможно ли это сделать с помощью Qt Creator + mingw32 и Q_ASSERT / Q_ASSERT_X?

Ответы [ 3 ]

22 голосов
/ 28 августа 2012

Это возможно. Каким-то образом эта функция перестала работать для меня, но в основном вы хотите остановиться на qFatal (). Чтобы убедиться в этом, в Qt Creator перейдите в Инструменты -> Параметры -> Отладчик -> GDB и выберите «Стоп, когда выдается qFatal»

7 голосов
/ 21 января 2010

Вы можете установить обработчик для сообщений / предупреждений, которые выдает Qt, и самостоятельно обрабатывать их. См. Документацию для qInstallMsgHandler и пример, который они там приводят. Должно быть легко вставить разрыв в пользовательский обработчик сообщений (или, на самом деле, просто заявить об этом самостоятельно). Единственный небольшой недостаток заключается в том, что вы будете немного дальше вниз по стеку, чем там, где на самом деле произошла ошибка, но просто наращивать стек до тех пор, пока вы не окажетесь в нужном кадре.

2 голосов
/ 21 января 2010

Это возможно. Я кодировал функцию BreakInDebugger вручную и макрос assert, который вызывает функцию.

например: #define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))

...