LINUX.ORG.RU

qFatal() и Q_ASSERT_X

 


0

1

Господа, просветите пожалуйста по поводу макроса Q_ASSERT_X.

Использую его для проверки выполнения условий примерно следующим образом:

  if ((mdl = DBController->model(DBRevisionController::Specific, db)) == NULL ||
      mdl->rowCount() > 1)
    Q_ASSERT_X(false, "ArpDataModel::getArpMac()", "Invalid Specific model");

Ожидал после срабатывания макроса увидеть сообщения указанные в качестве аргументов. Не увидел. Получил только сообщение о том, что сгенерирован дамп (который я тоже нигде не наблюдаю). Открыл документацию.

void Q_ASSERT_X ( bool test, const char * where, const char * what )

Prints the message what together with the location where, the source file name and line number if test is false.

***

If b is zero, the Q_ASSERT_X statement will output the following message using the qFatal() function...

Смотрю, что пишут про qFatal()

void qFatal ( const char * msg, ... )

Calls the message handler with the fatal message msg. If no message handler has been installed, the message is printed to stderr...

Однако app 2> err.log тоже не дал каких-либо результатов. Запускал отладочную сборку.

Подскажите пожалуйста, как мне вывод сообщения при выполнении условия получить и где искать корку.



Последнее исправление: mkam (всего исправлений: 1)

Сборка то у тебя отладочная? А то Q_ASSERT_X скорее всего отключается в релизной.

m0rph ★★★★★
()
Ответ на: комментарий от m0rph

Однако app 2> err.log тоже не дал каких-либо результатов. Запускал отладочную сборку.

Сборка отладочная. Отладчиком QtCreator'а убедился, что программа прерывается после того, как не проходит проверку условия.

mkam
() автор топика

Переключился на системную сборку Qt (до этого тестировал на версии собранной с флагом developer-build). Заработало. Видимо, что-то при сборке лишнего накрутил. Буду разбираться.

Остался открытым вопрос с дампом.

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

Если у тебя systemd, то он вполне может записывать корки в свое хранилище.

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