Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

Борьба EAccessViolation. Нужны общие идеи   Найти похожие ветки 

 
boets ©   (2003-01-24 11:17) [0]

Время от времени в разных местах возникает EAccessViolation. Вероятно, не освобождаются какие то ресурсы программы. Какие? Как узнать? Нужны какие-нибудь алгоритмы поиска.


 
Игорь Шевченко ©   (2003-01-24 11:21) [1]

Общая идея одна - отладчик в руки.


 
Digitman ©   (2003-01-24 11:35) [2]

"Access violation at address XXXXXXXX ..."

Берешь значение этого самого XXXXXXXX, стартуешь приложение под встроеннным отладчиком, выбираешь меню "Search | Find Error.." , вводишь XXXXXXXX - и отладчик показывает тебе строку исх.текста, при выполнении которой ты схлопотал AV


 
Anatoly Podgoretsky ©   (2003-01-24 11:58) [3]

Лучше бороться с причиной, проблема у тебя при работе с уазателями, недействительные


 
Юрий Федоров ©   (2003-01-24 12:04) [4]

Вряд ли это неосвобождение ресурсов. Скорее многократное освобождение(двойное free например). Или ошибки в функциях типа move, freemem, strcopy и др. - причин может быть куча


 
Smithson ©   (2003-01-24 12:08) [5]

>>Берешь значение этого самого XXXXXXXX, стартуешь приложение под встроеннным отладчиком, выбираешь меню "Search | Find Error.." , вводишь XXXXXXXX - и отладчик показывает тебе строку исх.текста, при выполнении которой ты схлопотал AV

Фиг! Почти месяц бодался в многопоточном приложении с подобными фичами. Внешним отладчиком видел, что крошится wininet.dll. Но вот выхода на строку, породившую ошибку, не было не разу.


 
Evgeny V ©   (2003-01-24 12:12) [6]

Ну еще могу посоветовать CodeGuard


 
Digitman ©   (2003-01-24 12:20) [7]


> Smithson


А с какого хрена тебе встр.отладчик покажет строку, если исх.текста wininet.dll нет ?))


> Почти месяц бодался


А нечего бодаться было !)

Если чуть-чуть подумать и почитать хоть что-то на эту тему, то тут же выяснится, что по адресу XXXXXXXX оч легко определить, к коду в ВАП какого модуля процесса относится этот адрес) ... и сразу локализовать именно wininet.dll


 
Smithson ©   (2003-01-24 12:30) [8]

Бодался я не с происком источника, а с методами борьбы.
Где случается, нашел быстро. Бвло интересно, что делать, что бы не. :-))


 
smok_er   (2003-01-24 12:38) [9]

Вообще то у меня тоже были аналогичниые глюки с wininet.
Причиной было неправильное декларирование переменных. Например
не так : dwBuffer: array[1..20] of char; а так:
dwBuffer: Сhar;
Причем примеры были взяты из открытых и внушающих доверие источников. В приведенном примере вызывалась функция HttpQueryInfo, причем AV появлялся после отработки функции, которая в функциональном плане была работоспособной.

Так что наверное стоит покопаться в исходниках в этом направлении.



 
Anatoly Podgoretsky ©   (2003-01-24 12:49) [10]

Твои источники не заслуживают доверия


 
cult ©   (2003-01-24 13:13) [11]

ИМХО, нет тут никаких спецсредств, надо работать внимательней.

Например, был такой случай: был TSpeedButton, и я к нему обращался типа так : TSpeedButton(S).Glyph и т.д.

А потом на место TSpeedButton стала приходить TPanel, и Дельфы это проглотили. Но стала иногда падать программа, как раз AccessViolation и выдавала. Вот и ищи отладчиками такое...


 
Паша ©   (2003-01-24 13:58) [12]

В "Debugger Options"->"OS Exceptions" на AV ставишь пипочку в "Handed By": Debugger. Ну и, соответственно, "Stop on Delphi Exceptions".
Собираешь проект с VCL и, если повезет, попадешь в место, где эта бяка вылазит.
Удачи в вашем безнадежном деле!


 
Anatoly Podgoretsky ©   (2003-01-24 14:06) [13]

Проблема то не в WinInet а в данных, которые в нее передают.


 
Smithson ©   (2003-01-24 14:30) [14]

Ну как сказать. У меня все решилось после синхронизации вызова создания сокета (обернул его в критическую функцию).


 
id_privin ©   (2003-01-24 15:37) [15]

Проблеммы могут возникать если на некий объект реализующий интерфейсы есть ссылки как на объекты и как на интерфейсы. Грабли возникают если забыть что все интерфейсы наследники IUnknown, и в TComponent есть реализация _Realese.



Страницы: 1 вся ветка

Текущий архив: 2003.02.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-5021
MikeFW
2003-01-23 09:38
2003.02.03
Как сделать пораметры через командную строку и прогу-невидимку?


3-4742
Gero-man
2003-01-14 19:06
2003.02.03
Как использовать транзакции в Дельфи


14-5155
Yegor Derevenets
2003-01-04 16:53
2003.02.03
Пишу клон ICQ


3-4778
CPPBuilderDev
2003-01-16 19:24
2003.02.03
ПОМОГИТЕ, извелся весь (модератору плииз не пинать)!


1-4884
Armageddon
2003-01-24 23:18
2003.02.03
Добавление символа