Подтвердить что ты не робот

Отладка утверждает в Qt Creator

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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