Ошибка возникает только в режиме выпуска - PullRequest
3 голосов
/ 20 марта 2011

Мое приложение закрывается как-то только в режиме выпуска. И я даже не вижу стека вызовов. Я думаю, это все как-то сломано.

И он отлично работает в режиме отладки. В чем может быть проблема? Или как мне разобраться в чем проблема?

Другая проблема заключается в том, что я хочу попробовать режим отладки с неинициализированными переменными. Я имею в виду, насколько я знаю, в режиме отладки все переменные инициализируются должным образом (это правильно?). Но не в режиме релиза. Поэтому я хочу попробовать режим отладки без автоматического режима инициализации. Возможно ли это?

Я работаю над VS2010, c ++, directX, Windows 7. Спасибо.

Ответы [ 2 ]

5 голосов
/ 21 марта 2011

Попробуйте отключить оптимизацию и попробуйте снова

99% случаев, когда некоторые из ваших переменных не инициализируются, проверьте очень внимательно.

3 голосов
/ 20 марта 2011

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

Мое приложение как-то закрыто только в режиме разблокировки

Сначала нужно определить, что это за выключение.Это сбой, прерывание или закрытие?Поместите точку останова на все возможные точки выхода (как обычные, как WM_CLOSE), так и нерегулярные, как _abort.

Если ни одна точка останова не достигнута, по крайней мере, скопируйте выходные данные отладки здесь, чтобы увидеть, что говорит о том, какосновной поток был прерван (какой код результата или что-либо еще, что могло бы дать больше информации).

Чтобы суммировать различия между отладкой и выпуском:

  • debug инициализирует динамически распределенные переменные неверным значением (это выполняется библиотекой времени выполнения отладки, управляемой генерацией кода / библиотекой выполнения)
  • debug инициализирует переменные, выделенные стеком, с неверным значением (управляется проверкой генерации кода / базовыми проверками времени выполнения - / RTC)
  • оптимизация отключена в отладке (управляется параметрами оптимизации - / O)
  • определены различные макросы (_DEBUG против NDEBUG) (управляются определениями препроцессора / препроцессора)

Вы можетеотрегулируйте настройки режима релиза по одному, чтобы они соответствовали настройкам отладки доОматическое отключение "останавливается.Тогда вы будете знать, какую проблему искать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...