Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.035 c
1-1101416797
Bobby Digital
2004-11-26 00:06
2004.12.12
Runtime Error


1-1101631705
Yus
2004-11-28 11:48
2004.12.12
ListView


6-1094570963
pkm
2004-09-07 19:29
2004.12.12
Сеть


14-1101124907
Comp
2004-11-22 15:01
2004.12.12
Инсталяция Turbo Assembler 5.0


3-1100160717
S@lik
2004-11-11 11:11
2004.12.12
Фильтрация





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский