Включить отладку в сборках релизов

#c #qt #debugging #visual-studio-2012

#c #qt #отладка #visual-studio-2012

Вопрос:

В чем моя проблема, в основном, когда я запускаю следующий код в сборке отладки, я получаю index out of range исключение:

 int main(int argc, char* argv[])
{
     QApplication app(argc, argv);
     QStringList test();
     QInfo() << test.at(3);
     app.exec();
}
 

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

Поэтому я подумал, что мне нужно включить режим отладки — я так и сделал:

  1. Установите формат отладочной информации в базу данных программы (/Zi)
  2. Установите для Включения инкрементного связывания значение No (/INCREMENTAL:NO)
  3. Установите для Generate Debug Info значение Yes (/DEBUG)
  4. Установите для ссылок значение Yes (/OPT:REF)
  5. Установите для файла сгенерировать карту значение Yes (/MAP)Yes (/MAP)
  6. Установите для экспорта карты значение Yes (/MAPINFO:ЭКСПОРТ)

Однако, когда я пытаюсь запустить свое приложение, эффекта по-прежнему нет. Итак, как я могу включить это?

Комментарии:

1. Отключите оптимизацию.

2. IIRC — это утверждение (макрос), которое компилируется в режиме выпуска ( #define assert() //nothing )

3. @tkausl Верно assert(_Expression) ((void)0) , однако я не уверен, есть ли утверждение в данном конкретном случае.

4. @AndyG все время их снимал.

5. @tkausl Не похоже, что это утверждение, определенное собственное утверждение и до сих пор никаких эффектов: #undef assert #define assert(x) QMessageBox::critical(nullptr,"Error", "Assert");