Форум » Clipper » Плавающий GPF (чтоб его...) » Ответить

Плавающий GPF (чтоб его...)

alexmar: Исходные Clipper 5.2e + CT3 + SIX3.0 + Blinker7.0 (Dual mode) OS WinXP (Pro) + SP2 Возникает сабж типа BLX286 : 1313 : exception error 0D : general protection fault, code = 0000h ну и дальше дамп... Основная неприятность, что сабж плавающий (в пределах одной процедуры). Сейчас запустил вылетело, запустил еще раз - прошло дальше и снова вылетело. Запустил еще раз - прошло до конца. Перед тем, как разбираться с дампом, хотелось бы выяснить следующие вопросы: 1 Кто сталкивался с подобной ситуацией и как боролся? 2 Какие могут быть причины возникновения такой проблемы?

Ответов - 10

petr: Была такая проблема при : 1) интенсивном вычислении макроопределений с созданием по ходу выполнения новых PRIVATE переменных или массивов. 2) при передаче PUBLIC переменных в качестве параметров функций по ссылке. Вылечилось после отказа от подобных методов.

Sergy: вылетало ни с того, ни с сего при вызове в protected mode функции, требующей параметр определенного типа. Например: при вызове x:=DIRECTORY(myDir) если тип myDir не строковый, а к примеру (из-за ошибки) тип дата, получается 100% GPF Короче так: ТОЧНО ПРОВЕРЯЙ ПАРАМЕТРЫ передаваемые в вызываемую функцию.

suv2: alexmar пишет: Возникает сабж типа BLX286 : 1313 : exception error 0D : general protection fault, code = 0000h ну и дальше дамп... Так дамп, милейший - это не мусор. Смотришь адрес ошибки и определяешь по MAP процедуру, которая его вызвала. При этом, определять надо глазами, стандартая утилита из поставки блинкера - слепая или врёт. alexmar пишет: Основная неприятность, что сабж плавающий (в пределах одной процедуры). 1 Кто сталкивался с подобной ситуацией и как боролся? 2 Какие могут быть причины возникновения такой проблемы? 1. Способ один - заменить плохой код на хороший 2. Плохо написанный код. Довольно часто - неинициализированные указатели или ваще бредовый код. Отсутствие проверки корректности параметров. В потроха клиппер заглянешь - там просто кошмар, за такое руки надо рубить.


alexmar: suv2 пишет: Плохо написанный код. Подтвердилось. В данном конкретном случае виноватой оказалась функция RemRight() из CT III. Подозреваю, что не одна она может глючить , так как еще раньше была замечена некорректная работа клонов функции Pad() Поэтому, если кто-нить уже вылавливал такие функции, поделитесь списком, пожалуйста, дабы не наступать на чужие грабли.

Dima: alexmar KEYSEC()

alexmar: Dima пишет: KEYSEC() Заметано

Григорьев Владимир: Мое мнение такое. Лучше вообще не пользоваться функциями из CT, без которых в принципе можно обойтись. Например, есть любители, которые используют строковые функции из CT, в то время когда легко тоже самое сделать с помощью стандартных строковых функций Clipper. Включать "чужие" функции или библиотеки без наличия их исходного кода нужно только в крайней необходимости. Чем меньше контролируемого вами кода, тем надежнее работает программа.

alexmar: Григорьев Владимир пишет: Чем меньше контролируемого вами кода, тем надежнее работает программа С эти согласен. Григорьев Владимир пишет: Лучше вообще не пользоваться функциями из CT, без которых в принципе можно обойтись. Свое "колесо" оно, конечно, круглее Но в случае, когда нужно быстро написать прикладную программу изобретение своих велосипедов в условиях цейтнота грозит невыполнением в срок задания и, как следствие, недополучением масла к хлебу Григорьев Владимир пишет: Включать "чужие" функции или библиотеки без наличия их исходного кода нужно только в крайней необходимости Из "чужих" истользую только CT, а, что касается исходного кода, то ведь и к "родным" функциям Clipper исходников в доступном виде нет.

gfilatov: alexmar пишет: ведь и к "родным" функциям Clipper исходников в доступном виде нет. Думаю, что это НЕ так - смотри по ссылке http://www.mythologics.com/c53/FUNCLIST.html

alexmar: gfilatov пишет: Думаю, что это НЕ так "Был неправ. Вспылил" (с) А а линк спасибо



полная версия страницы