[an error occurred while processing this directive]
|
1) по поводу проверки ликвидности указателей. В Вашу структуру добавляете поле содержащие результат определённых операций над Вашими данными - или по другому CRC. Это Вы поимели лакмосувую бамажку, окей либо не окей...
2) делаете некий тестовый вывод, например звук. Начинаете пищать в том случае, если после вызова определённой подпрограммки CRC не совпадает со значением.
3) Если запищал кристалл - ставите проверку CRC в середину кода (делением пополам - быстрее всего)внутри подпрограммки...и так до локализации кода который портит Ваши данные.
4) Анализируете место. Это может быть выше названная причина (затирка стэком), это могут быть небрежные телодвижения в коде, это может быть привыкание глаза к явно написанной глупости и т.д.. правите, прогоняете...
если место сбоя плавающее - как правило это не корректная работа в прерываниях. Так же мона блокировать прерывания, для отсеивания этого факта. Либо сведение прерывания к минимуму действий кода.
как СОВСЕМ РЕДКОЕ - иногда встречаеться баги компилятора (например Keil). Но это достаточно экзотическая штука и на ОЧЕНЬ больших проектах азма...
удачи Вам
(круглый)
E-mail: info@telesys.ru