У меня здесь какая-то любопытная проблема, и, честно говоря, я понятия не имею, что ее вызывает. По какой-то причине, когда я отлаживаю свое приложение из Qt Creator, мое приложение работает без каких-либо исключений, но когда я только запускаю приложение, я получаю исключение нарушения прав записи (как показано ниже)
(1f68.1ea8): нарушение доступа - код c0000005 (первый шанс)
Исключение в 0x77da2073, код: 0xc0000005: нарушение прав записи в: 0x1, флаги = 0x0 в ntdll! RtlpLowFragHeapFree
Исключения первого шанса сообщаются до обработки любого исключения.
Это исключение можно ожидать и обрабатывать.
eax = 00720065 ebx = 82130074 ecx = 006f007f edx = 0000006f esi = 01fa5fb6 edi = 82130000 eip = 77da2073 esp = 0012cc70 ebp = 0012cca4 iopl = 0 nv up ei pl nz na po sss23 = 001 es = 0023 fs = 003b gs = 0000 efl = 00010202
!
Ntdll RtlpLowFragHeapFree + 0xc5:
77da2073 8930 mov dword ptr [eax], esi ds: 0023: 00720065 = ????????
Исключение в 0x77da2073, код: 0xc0000005: нарушение прав записи в:
0x1, флаги = 0x0
ПРИМЕЧАНИЕ: НИЖНЯЯ СПОНТАННАЯ ОСТАНОВКА
Состояние изменено с InferiorRunOk (11) на InferiorStopOk (14).
Когда я закомментирую строку, в которой он разрывается (после запуска, а затем вручную подключая отладчик), это просто, кажется, приводит меня к другой строке для той же проблемы. Я использую цепочку инструментов MSVCC с дополнительными флагами:
QMAKE_CFLAGS_RELEASE + = -Zi
QMAKE_CXXFLAGS_RELEASE + = -Zi -g
QMAKE_LFLAGS_RELEASE + = / DEBUG / OPT: REF
Чтобы рассказать, вот что я пробовал:
- Отладка с настройкой отладки - ok
- Запуск с конфигурацией отладки - ok
- Отладка с конфигурацией выпуска - ок
- Работа с конфигурацией выпуска - исключение