Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизКак отловить 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c