Главная страница
    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.57 MB
Время: 0.049 c
14-1100727843
Marser
2004-11-18 00:44
2004.12.12
Отбор на ЧМ-2006


4-1098692188
Роман
2004-10-25 12:16
2004.12.12
Удаленное управление


14-1100832492
Думкин
2004-11-19 05:48
2004.12.12
С днем рождения! 19 ноября


9-1092392415
MonoLife
2004-08-13 14:20
2004.12.12
Функция странно работает...


3-1100174069
Layner
2004-11-11 14:54
2004.12.12
При вставке новой строки в DBGrid, при переходе на рядом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский