Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вылетает сообщение "Debug Assertion Failed"!!!

28K
11 марта 2008 года
D-Luxe
18 / / 08.03.2008
При запуске exe'шника вылетает сообщение с надписью "Debug Assertion Failed". Среда - Visual Studio 2005. Архитектура приложения - Dialog Based. Подскажите в чем проблема. Скрин ниже...
398
11 марта 2008 года
Alexandoros
630 / / 21.10.2005
В 17 строке ошибка.
288
11 марта 2008 года
nikitozz
1.2K / / 09.03.2007
Попробуй запустить в режиме отладки (по F5). Когда вылетит Assert нажми на кнопку "Повтор". Среда тебя перекинет на строчку, которая вызывает этот Assert
2.1K
11 марта 2008 года
wAngel
129 / / 23.11.2004
Цитата: Alexandoros
В 17 строке ошибка.



А собственно, с чего вы взяли, что ошибка в 17 строке?
И уверены ли вы, что ошибка в модуле afxwin?

Для автора:
Процедура assert обычно используется для обнаружения логи-
ческих ошибок в программе.
Следовательно, в каком-то месте, не выполнилась проверка.
Устанавливайте брейкпоинт, ищите эту самую проверку.

28K
11 марта 2008 года
D-Luxe
18 / / 08.03.2008
Отладчик находит ошибку в файле afxwin2.inl. Причем ошибка вылетает при запуске на такой строке:
 
Код:
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)) { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse, lpfnTimer); }

И ошибка вылетает при закрытии на след. строке:
 
Код:
_AFXWIN_INLINE BOOL CWnd::KillTimer(UINT_PTR nIDEvent){ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
398
13 марта 2008 года
Alexandoros
630 / / 21.10.2005
Вечерело. А ёжики все падали и падали.....

D-Luxe, почитай на досуге, может поможет.
2.1K
13 марта 2008 года
wAngel
129 / / 23.11.2004
Цитата: D-Luxe
Отладчик находит ошибку в файле afxwin2.inl. Причем ошибка вылетает при запуске на такой строке:
 
Код:
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)) { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse, lpfnTimer); }

И ошибка вылетает при закрытии на след. строке:
 
Код:
_AFXWIN_INLINE BOOL CWnd::KillTimer(UINT_PTR nIDEvent){ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }



Повторюсь, ASSERT требуется для контроля логики программы.
Следовательно ошибку надо искать в сторону ::IsWindow(m_hWnd).

Хотя Alexandoros вас направил в более верном направлении... Все телепаты на ТНТ переметнулись...

318
14 марта 2008 года
nof
193 / / 03.04.2006
мне честно говоря это напомнило ошибку, которая возникала при попытке обновить данные формы (UpdateData()) в отдельном потоке (как оказалось, так делать нельзя).
240
14 марта 2008 года
aks
2.5K / / 14.07.2006
Нельзя что? Что значит обновить данные формы? По стуи не надо в отдельном потоке с родительским дочерние окна создавать. А так просто каосяк видимо с таймером для несуществующего окна.

Автор - проййдись в конце концов по стэку вызовов еще с места падения, посмотри значения переменных в дебагере.
28K
15 марта 2008 года
D-Luxe
18 / / 08.03.2008
Решил проблему!!! У меня SetTimer стоял в конструкторе класса Dialog, а KillTimer в деструкторе. Поставил SetTimer в OnInitDialog(), KillTimer перед OnOK() и АЛЛИЛУЙЯ!!!
240
15 марта 2008 года
aks
2.5K / / 14.07.2006
Ну не удивительно - при создании таймера для окна - окна еще не было.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог