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

Вниз

Access violation...   Найти похожие ветки 

 
Yury   (2008-06-28 10:04) [0]

Вообщем есть такая проблема: программа работает 8 часов в день, 5 дней в неделю, бывает, непонятно при каких обстоятельствах, программа зависает и винда выдает "Access violation.... Программа выполнила недопустимую ошибку и будет закрыта...". Подскажите как из Делфи отследить, что программа зависла, хотелось бы, что бы при зависании она выполнила кое-какие действия...


 
Anatoly Podgoretsky ©   (2008-06-28 10:17) [1]

> Yury  (28.06.2008 10:04:00)  [0]

Что бы выполнила еще несколько недопустимых действий, шутник однако.


 
Yury   (2008-06-28 10:24) [2]

что ничего нельзя сделать?


 
KSergey ©   (2008-06-28 11:02) [3]

Первое. Запомните: не "винда выдает", а ваша прорамма!
Второе: очевидно, что в программе есть ошибка.
Третье: посоветьвать тут можно тольо одно: вести логирование и в случае краха программы медитировать над логами, пытаясь понять где кроется ошибка.


 
KSergey ©   (2008-06-28 11:02) [4]

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


 
Anatoly Podgoretsky ©   (2008-06-28 11:04) [5]

> Yury  (28.06.2008 10:24:02)  [2]

А сколько раз надо выполнить недопустимых действий?
Вот столько раз и запусти свою поделку и будет тебе счастье.


 
Anatoly Podgoretsky ©   (2008-06-28 11:31) [6]

> KSergey  (28.06.2008 11:02:03)  [3]

Вместо логирования можно пересмотреть код и заменить опасные конструкции безопасными.

1. не делать повторного использования переменных
2. использовать try finally
3. не использовать указателей и связыных (обвязаных ) с ними неестественных действий.
4. только managed типы

Самое правильное в его случае - это перейти на Delphi.NET (хотя бы попробовать откомпилировать под ней, что бы получить список по 1-4),


 
Anatoly Podgoretsky ©   (2008-06-28 11:32) [7]

Забыл добавить, включить проверку диапазонов и переполнения.


 
KSergey ©   (2008-06-28 11:41) [8]

> Anatoly Podgoretsky ©   (28.06.08 11:32) [7]
> Забыл добавить, включить проверку диапазонов и переполнения.

К стати очень здраво.
Правда, тогда возможен плач по поводу других ошибок :)


 
Anatoly Podgoretsky ©   (2008-06-28 11:45) [9]

> KSergey  (28.06.2008 11:41:08)  [8]

А что делать, писать то надо прямо или плакать.


 
salexn   (2008-06-28 11:50) [10]

Как вариант использовать либо Madshi либо EurekaLog для логирования эксепшена. В лог запишет строку где валится и еще много полезной информации.


 
Yury   (2008-06-28 12:42) [11]


> Третье: посоветьвать тут можно тольо одно: вести логирование
> и в случае краха программы медитировать над логами, пытаясь
> понять где кроется ошибка.

а как вести логирование?


 
KSergey ©   (2008-06-28 13:17) [12]

Открыть текстовый файл - и вперед, писать в него служебную информацию
Какую - тут уж каждый сам решает что ему надо для локализации ошибки.
Только файл лучше открыть с небуферированной записью. А то при крахе потеряем как раз самое интересное - конец лога


 
Yury   (2008-06-28 13:19) [13]

лог как раз пишеться, только в нем ничего по ошибке нет, а как включить небуферированную запись?


 
KSergey ©   (2008-06-28 13:20) [14]

> Yury   (28.06.08 13:19) [13]
> лог как раз пишеться, только в нем ничего по ошибке нет,

Так а нафига ж такой лог тогда нужен?? ПО башке автору такого лога.

К стати, вот же рядом
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168


 
Yury   (2008-06-28 13:29) [15]

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


 
Yury   (2008-06-28 13:30) [16]


> К стати, вот же рядомhttp://www.delphikingdom.com/asp/viewitem.
> asp?catalogid=168

что-то ничего толкового я здесь не нашел...


 
DrPass ©   (2008-06-28 13:37) [17]


> Подскажите как из Делфи отследить, что программа зависла,
>  хотелось бы, что бы при зависании она выполнила кое-какие
> действия...

MadExcept, EurekaLog


 
Palladin ©   (2008-06-28 13:41) [18]


>Yury

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


 
Yury   (2008-06-28 13:45) [19]


> MadExcept, EurekaLog

так это за деньги, а чтобы бесплатно... :-)


 
KSergey ©   (2008-06-28 14:03) [20]

Я вот не пойму
Автор желает, чтобы в логе написалось "ошибка там-то в том-то"?! Так чтоли??


 
Ляпа   (2008-06-28 14:05) [21]

http://reestr.hotmail.ru/publik/watson.htm


 
Anatoly Podgoretsky ©   (2008-06-28 14:16) [22]


> а вот как записать еще и то, что происходит в момент зависания?

Шутник


 
umbra ©   (2008-06-28 14:58) [23]


> не использовать указателей и связыных (обвязаных ) с ними
> неестественных действий.

интересно, а как тогда программу писать? там же ж одни указатели :)


 
Yury   (2008-06-28 15:03) [24]


> Я вот не поймуАвтор желает, чтобы в логе написалось "ошибка
> там-то в том-то"?! Так чтоли??

ага, можно такое сделать?


 
KSergey ©   (2008-06-28 15:13) [25]

Можно.
А там - "Или ишак сдохнет или султан помрёт"


 
Anatoly Podgoretsky ©   (2008-06-28 15:16) [26]

> umbra  (28.06.2008 14:58:23)  [23]

Не путай типизированые указатели, ака string/class с нетиризироваными.


 
DrPass ©   (2008-06-28 16:38) [27]


> Yury   (28.06.08 13:45) [19]
>
> > MadExcept, EurekaLog
>
> так это за деньги, а чтобы бесплатно... :-)

MadExcept для некоммерческого использования бесплатен. А если тебе для коммерческого - то не такой уж он и дорогой, а в хозяйстве довольно полезен.
Ну а в конце-концов, если тебе надо делать какие-то действия после AV, добавь их в обработчик Application.OnException. Может быть, тебе этого будет достаточно


 
Игорь Шевченко ©   (2008-06-28 22:00) [28]

JclDebug из JCL - совсем бесплатно


 
Плохиш ©   (2008-06-29 01:27) [29]

Удалено модератором


 
Германн ©   (2008-06-29 01:32) [30]

Удалено модератором


 
Плохиш ©   (2008-06-29 01:35) [31]

Удалено модератором


 
Германн ©   (2008-06-29 01:42) [32]

Удалено модератором


 
Johnmen ©   (2008-06-29 01:43) [33]

Удалено модератором


 
Германн ©   (2008-06-29 01:51) [34]

Удалено модератором


 
Германн ©   (2008-06-29 01:52) [35]

Удалено модератором


 
Johnmen ©   (2008-06-29 02:09) [36]

Удалено модератором


 
Германн ©   (2008-06-29 02:30) [37]

Удалено модератором


 
KSergey ©   (2008-06-29 11:40) [38]

мда.. пообщались...

Автор, полегчало хоть?


 
Yury   (2008-06-30 09:38) [39]

всем спасибо, заюзал EurekaLog, думаю помогет!



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

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

Наверх




Память: 0.55 MB
Время: 0.023 c
1-1195488425
DevilDevil
2007-11-19 19:07
2008.07.27
Получить Call-Stack


3-1202913301
AlexeyMir
2008-02-13 17:35
2008.07.27
Кеширование БД


2-1214361504
apic
2008-06-25 06:38
2008.07.27
GetFocus()


15-1212731985
oldman
2008-06-06 09:59
2008.07.27
А так ли уж нужна в жизни высшая математика?


2-1214466122
programmer90
2008-06-26 11:42
2008.07.27
импорт из Excel