Выскакивает такая ошибка при выполнении DEBUG-версии программы. При работе с RELEASE-версии ошибок не возникает. Программа работает с БД через DAO.
В чем может быть причина этой ошибки?
Здравствуйте, <Аноним>, Вы писали:
А> Выскакивает такая ошибка при выполнении DEBUG-версии программы. При работе с RELEASE-версии ошибок не возникает. Программа работает с БД через DAO. А> В чем может быть причина этой ошибки?
там должно быть написано и номер строки в исходниках указан
... << RSDN@Home 1.1.4 beta 7 rev. 501>>
Re[2]: Ошибка "Debug Assertion Failed"
От:
Аноним
Дата:
02.07.05 07:31
Оценка:
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, <Аноним>, Вы писали:
А>> Выскакивает такая ошибка при выполнении DEBUG-версии программы. При работе с RELEASE-версии ошибок не возникает. Программа работает с БД через DAO. А>> В чем может быть причина этой ошибки?
OE>там должно быть написано и номер строки в исходниках указан
Да, написано:
При запуске выскакивают 12 поворябщихся сообщений
— afxwin1.inl Line 22
— olevar.cpp Line 2197
— afxwin1.inl Line 22
— olevar.cpp Line 2197
— afxwin1.inl Line 22
— olevar.cpp Line 2197
— afxwin1.inl Line 22
— olevar.cpp Line 2197
— afxwin1.inl Line 22
— olevar.cpp Line 2197
— afxwin1.inl Line 22
— olevar.cpp Line 2197
При попытке добавить строку в БД выскакивают 2 сообщения
— dbgHeap.c Line 1017. Expression _BLOCK_TYPE_IS_VALID(pHeap->nBlockUse)
— второе соощение ссылается ан мой модуль .exe. Выводится DAMAGE: before Ignore block (#196611) at 0x00AE22AB
Во всех сообщениях написано, что посмотреть причины, по которым может произойти Assertion failure можно посмотреть в документации по Assert VC++.
У меня с английским плохо, поэтому поздскажите плиз что это за Assertion Failure?
Что вообще такое Assertion? Это как-нибудь связано с макросами ASSERT и ASSERT_VALID? Зачем они вообще нужны?
Здравствуйте, <Аноним>, Вы писали:
А> Во всех сообщениях написано, что посмотреть причины, по которым может произойти Assertion failure можно посмотреть в документации по Assert VC++. А> У меня с английским плохо, поэтому поздскажите плиз что это за Assertion Failure? А> Что вообще такое Assertion? Это как-нибудь связано с макросами ASSERT и ASSERT_VALID? Зачем они вообще нужны?
авторы библиотечных функций вставляют в свои функции проверки неких обязательных условий, без которых выполнение функции не имеет смысла, типа
ASSERT(afxCurrentInstanceHandle != NULL);
если ты подорвался на этом месте, значит применяешь библиотеку не так, как расчитывал автор, надо разбираться, почему у тебя afxCurrentInstanceHandle == NULL
Начни с сгенеренного мастером каркаса, добавляй свой код, пока не проявится ASSERT, если не въедешь сам, приводи этот код для разборок.
... << RSDN@Home 1.1.4 beta 7 rev. 501>>
Re[4]: Ошибка "Debug Assertion Failed"
От:
Аноним
Дата:
02.07.05 16:34
Оценка:
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, <Аноним>, Вы писали:
А>> Во всех сообщениях написано, что посмотреть причины, по которым может произойти Assertion failure можно посмотреть в документации по Assert VC++. А>> У меня с английским плохо, поэтому поздскажите плиз что это за Assertion Failure? А>> Что вообще такое Assertion? Это как-нибудь связано с макросами ASSERT и ASSERT_VALID? Зачем они вообще нужны?
OE>авторы библиотечных функций вставляют в свои функции проверки неких обязательных условий, без которых выполнение функции не имеет смысла, типа
OE>
OE>ASSERT(afxCurrentInstanceHandle != NULL);
OE>
OE>если ты подорвался на этом месте, значит применяешь библиотеку не так, как расчитывал автор, надо разбираться, почему у тебя afxCurrentInstanceHandle == NULL
OE>Начни с сгенеренного мастером каркаса, добавляй свой код, пока не проявится ASSERT, если не въедешь сам, приводи этот код для разборок.
Вся фишка в том, что я не пользовался мастером. Я просто в своем проекте (не сгенеренный MFC-Wizard, а написанный ручками с явным указанием основного цикла выборки сообщения, и.т.д) в настройках указал, что нужно использовать MFC как статическую библиотеку, а затем просто пользовался классами CDaoDatabse, CDaoRecordset, и.т.д.
Например, для добавления строки использвался код типа
Здравствуйте, <Аноним>, Вы писали:
А> Вся фишка в том, что я не пользовался мастером. Я просто в своем проекте (не сгенеренный MFC-Wizard, а написанный ручками с явным указанием основного цикла выборки сообщения, и.т.д) в настройках указал, что нужно использовать MFC как статическую библиотеку, а затем просто пользовался классами CDaoDatabse, CDaoRecordset, и.т.д.
так "просто" использовать классы из MFC не получится. Если твоя цель — работающая программа — сгенери каркас мастером, посмотри что там и как и добавь свой код, если проводишь исследования на тему mfc-классы в не-mfc проекте — флаг в руки.
А> Например, для добавления строки использвался код типа А>
Здравствуйте, <Аноним>, Вы писали:
А> Во всех сообщениях написано, что посмотреть причины, по которым может произойти Assertion failure можно посмотреть в документации по Assert VC++. А> У меня с английским плохо, поэтому поздскажите плиз что это за Assertion Failure? А> Что вообще такое Assertion? Это как-нибудь связано с макросами ASSERT и ASSERT_VALID? Зачем они вообще нужны?
Связано напрямую.
Грубо говоря: проверка некоторого критического условия в дебажной версии. Корректность переменной (у тебя там по первому assert-у хэндл нулевой) и т.п. Из релиза всё внутри ASSERT() удаляется, поэтому в релизе assertion failure случиться не может.
Смотри исходники.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
WARNING: expression "to_be || !to_be" is always true
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Odi$$ey, Вы писали: А>... А>При попытке добавить строку в БД выскакивают 2 сообщения А> — dbgHeap.c Line 1017. Expression _BLOCK_TYPE_IS_VALID(pHeap->nBlockUse) А> — второе соощение ссылается ан мой модуль .exe. Выводится DAMAGE: before Ignore block (#196611) at 0x00AE22AB
Может я и не прав, но проверьте, не переполняется ли у вас где-нибудь буфер в куче?
По крайней мере, у меня лично строчка вида
- dbgHeap.c Line 1017. Expression _BLOCK_TYPE_IS_VALID(pHeap->nBlockUse)