#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();
}
Проблема в том, что когда я создаю в режиме выпуска и пытаюсь запустить приложение, ничего не происходит, никаких подсказок, никаких сбоев — просто тихий выход.
Поэтому я подумал, что мне нужно включить режим отладки — я так и сделал:
- Установите формат отладочной информации в базу данных программы (/Zi)
- Установите для Включения инкрементного связывания значение No (/INCREMENTAL:NO)
- Установите для Generate Debug Info значение Yes (/DEBUG)
- Установите для ссылок значение Yes (/OPT:REF)
- Установите для файла сгенерировать карту значение Yes (/MAP)Yes (/MAP)
- Установите для экспорта карты значение 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");