| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > странная ошибка |
| Автор: mrgloom 25.1.2013, 17:13 |
| программа работала нормально, потом я видимо что то поменял и теперь дебаг работает нормально, а в релизе не выводятся картинки и окно и кнопки иногда бывают как будто застывшими. ошибок не происходит и ничего не падает. что это может быть? |
| Автор: Alca 25.1.2013, 20:36 |
| все что угодно |
| Автор: Фантом 25.1.2013, 23:20 |
| В принципе, действительно все что угодно, но чаще всего источником подобных проблем является некорректная работа с памятью (используете неинициализированные переменные, обращаетесь к несуществующим элементам массива, забываете выделить память по указателю или раньше времени ее освобождаете и т.п.). В debug и release "дырка" попадает либо в неиспользуемый (формально) участок памяти (и тогда все работает), либо накладывается на что-то нужное (и тогда результат непредсказуем). |
| Автор: Alca 26.1.2013, 00:55 | ||
Вот загон с эссертом:
в релизе этотого кода не будет. А так код показывай. |
| Автор: mrgloom 28.1.2013, 10:52 | ||||
| там что то похоже именно с интерфейсом с MFC или с GDI связанно. еще выводит такое
+ в дебаге
так что смахивает и на мемори лик |
| Автор: Alca 28.1.2013, 15:35 |
| это смахивает на гадание на кофейной гуще |
| Автор: Earnest 29.1.2013, 09:11 |
Поищи в недрах MFC, вот и узнаешь, что это. Насколько я помню, это ровно то, что написано: разрушается документ, у которого взведен флажок модификации. Мемори-лики проявляются в дебаге по другому. А вообще Alca прав - гадаешь на кофейной гуще. А нужен системный подход: сначала зафиксировать ошибку, потом отладить. В релизе это не очень удобно, но есть OutputDebugString (которая, несмотря на им, работает и в релизе). Можно поробовать собрать релиз с минимальной отладосной информацией, чтобы подебажить его в среде. Но эффект может пропасть. Кроме того, релиз может плохо вести себя только вне IDE; на это есть утилитка от sysinternals, которая мониторит вывод OutputDebugString. И первым делом проверь утечку GDI ресурсов. |
| Автор: Alca 29.1.2013, 13:41 | ||
http://forum.vingrad.ru/forum/topic-203704.html |
| Автор: volatile 30.1.2013, 00:20 | ||
| часто UB-шные выражения, компилируюцца по разному в дебаге и релизе. В какой-то студии было, кажецца:
а - имело разное значение в дебаге и релизе. А UB-шных выражений (спасибо стандарту), немеряно, так что ... |
| Автор: mrgloom 1.2.2013, 15:08 |
| вообщем проблема была из-за того что HPEN удалялся ,а потом его настройки записывались в ини файл(соответственно мусор), и потом когда всё читалось обратно, GDI от некорректного HPEN не хотел выводить всё нормально, при этом нчиего не падало. а зависание окна от другого было, точнее оно было просто неактивно. а насчёт утечек почитаю тоже полезно. |
| Автор: mrgloom 18.2.2013, 13:22 | ||
на такой вывод в дебаге стоит обратить внимание? GDI handlers в диспетчере смотрел вроде ничего не увеличивается. |