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

Вниз

Как отловить ACCESS VIOLATION...   Найти похожие ветки 

 
GuestTM   (2004-10-27 12:59) [0]

Здравствуйте!

Имеется уже глобальный большущий проект. Но возникает иногда проблема в том, что программа (случаным образом) выдает ошибку "ACCESS VIOLATION AT ADDRESS ...."
Если бы ошибка была в коде, то можно было бы отловить ее, но где-то у клиентов она есть, а где-то никогда даже не возникает.
Вопрос: можно ли как-нибудь, хотя бы узнать по адресу, где она возникает???
Возможности сидеть с отладчиком Delphi у клиентов днями нет, поэтому как ее можно локализовать?
Может быть есть какие-нибудь инструменты, которые помогут ее выявить (без копания в assembler)...


 
Digitman ©   (2004-10-27 13:15) [1]


> Имеется уже глобальный большущий проект


.. и в этом проекте для протоколирования непредвиденных разработчиком исключений в осн.код.потоке д.б. предусмотрена обработка события Application.OnException , в теле которого следовало бы вести протокол

а если в проекте задействуются доп.трэды, то разработчик для той же цели обязан был заключать код потоковой ф-ции в блок try..except, где в блоке обработки исключения так же вел бы  протокол

если разработчик не сделал этого и вообще знать не знает об этих возможностях, остается только пожалеть его ..


 
TUser ©   (2004-10-27 15:09) [2]

Интересно, а чем это поможет? Ну получит разработчик лог, где написано, что по такому-то адресу и в такое-то время - av, и что с этим логом делать?


 
Digitman ©   (2004-10-27 15:13) [3]


> что с этим логом делать?


самый простой случай - подтереться им.
более сложный , с учетом "Возможности сидеть с отладчиком Delphi у клиентов днями нет" - автоматом отсылать лог разработчику для немедленного анализа и принятия мер.


 
Lin7   (2004-10-27 15:42) [4]

Кроме

> Digitman ©   (27.10.04 13:15) [1]

Ещё и
1. http://www.clevercomponents.com/articles/article012/exwatcher.asp
2. Статья "Централизованная обработка исключений" на rsdn.ru
3. Для ведения логирования можно использовать debug-функции весьма неплохой библиотеки JCL:
http://sourceforge.net/projects/jcl/
JclStartExceptionTracking и JclAddExceptNotifier
4. Для блоков initialization и finalization можно использовать SetUnhandledExceptionFilter см. MSDN.
5. Вопрос №22432 на форуме http://www.delphikingdom.ru/

Разбирайся :))

Если что-то нароешь ещё и поделишься - буду рад:
Lin7Work[с0баЧка}yandex(.тоЧkа)ru

Удачи.


 
GuestTM   (2004-10-28 06:55) [5]

ДЛЯ --- TUser ©  

Протоколирование исключений имеется. Но как уже было сказано ниже, какой смысл в этом? Даже есть опция отправки ошибок на SMS, как только она возникает, но что они дадут полезного???

Ну увижу я адрес памяти, и что далее? Что я могу сделать с ним?

Более того, ошибка это плавающая, то есть у кого-то таких проблем АБСОЛЮТНО НЕТ, а у кого-то они есть.... Когда появляются, тоже сказать невозможно, так как все происходит как-то случайным образом...


 
Digitman ©   (2004-10-28 08:22) [6]


> увижу я адрес памяти, и что далее?


имея этот адрес, можно как минимум определить модуль, вызвавший исключение .. дальнейшие действия зависят от конкретно локализованного модуля



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

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

Наверх




Память: 0.48 MB
Время: 0.055 c
14-1100892299
panov
2004-11-19 22:24
2004.12.12
http://delphibase.endimus.ru/ - поддерживают до сих пор?


14-1100831566
ИМХО
2004-11-19 05:32
2004.12.12
Роман с камнем, мелодия


4-1098537987
Funt_IK
2004-10-23 17:26
2004.12.12
Запись на CD


14-1101104384
Sash
2004-11-22 09:19
2004.12.12
w98 wxp


14-1100783094
Digitman
2004-11-18 16:04
2004.12.12
Не едут лыжи к вечеру .. не вижу очевидного .. ткните носом ?