|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
...raised too many consecutive exceptions...
Имеется программное средство: 95 модулей. Код написан на Delphi 6. Построение диаграммы модулей позволило определить кучу перекрестных ссылок. Имеется порядка 200 глобальных переменных.
Цель: Вытащить расчетный модуль и скомпоновать его в библиотеку. Модуль вытащен, библиотека скомпилирована, но при линковке с приложением на этапе загрузки библиотеки в память появляется сообщение "...raised too many consecutive exceptions..." и выбрасывает в отладчик ассемблера. Я так понимаю, что есть проблемы с выделением памяти под переменные. Вопрос: Как отследить - где именно происходит обвал? |
#2
|
||||
|
||||
Попробуй FastMM
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Та же проблема. Может дело не в выделении памяти, но библиотека компилится и вылетает именно в момент загрузки в память. Пробежался по регистрам. По-видимому там цикл и в какой-то момент происходит ссылка на пустой адрес памяти
Пошла Машенька в лес по грибы да по ягоды, а вернулась ни с чем. А все потому, что надо ставить перед собой конкретные цели! |
#4
|
|||
|
|||
Спасибо! Вроде разобрался с FastMM. Осталось разобраться в его логах
Пошла Машенька в лес по грибы да по ягоды, а вернулась ни с чем. А все потому, что надо ставить перед собой конкретные цели! |
#5
|
|||
|
|||
у меня аналогичная проблема,имеется проект под Delphi 2009, ранее всё работало, однако переустановил ОС, и поставил новый Delphi 2009. В коде ничего не менялось с тех пор, как в последний раз работало. Теперь при работе выскакивает сообщение
raised too many consecutive exceptions...access violation Обнаружил источник Имеется класс TRecordset, работающий с базой данных, в одном методе MapFields заполняется словарь имён параметров, передаваемых базе Код:
procedure TRecordset.MapFields; var i: integer; str : string; begin FieldMap.Clear; if VarIsEmpty(FDataset) then exit; for I := 0 to FDataset.Fields.Count - 1 do begin str := VarToStr(Fields(I).Name); FieldMap.Add(str, I); //********** end; end; класс создаётся обычно TRecordset.Create проблема в том, что если класс использовать вторично, т.е. не высвободить после однократного обращения к базе, то возникает эта ошибка(на строке отмеченой //**********), если же сделать TRecordset.Free, а потом снова TRecordset.Create и сделать запрос, то проблемы нет и всё отрабатывает успешно. Но дело в том, что ранее не надо было высвобождать его, а посылать несколько запросов, пользуясь одним экземпляром. Параметры str и I адекватные. Так у меня по всей программе, не хочется переписывать, да и это будет неправильно. Подскажите, в чем может быть проблема, как докопаться, что не нравится классу справочника FieldMap ? |