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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.