Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2011, 08:16   #1
DimychX
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 26
По умолчанию Ошибка "too many consecutive exceptions" при работе программы: как найти?

Добрый всем день!

Осваиваю Delphi 2010. Приложение постоянно мониторит сайт (API). Примерно через час появляется окно с ошибкой "too many consecutive exceptions". Не знаю причину, и где ее искать.

Помогите, пожалуйста!
DimychX вне форума Ответить с цитированием
Старый 21.06.2011, 08:33   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от DimychX Посмотреть сообщение
Добрый всем день!

Осваиваю Delphi 2010. Приложение постоянно мониторит сайт (API). Примерно через час появляется окно с ошибкой "too many consecutive exceptions". Не знаю причину, и где ее искать.

Помогите, пожалуйста!
"слишком много последовательных исключений". Скорее всего, это ошибки соединения. В C++, для отлавливания иключений используется оператор try. В Delphi, не знаю.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 21.06.2011, 08:48   #3
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Без кода не разобраться.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 21.06.2011, 09:33   #4
DimychX
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 26
По умолчанию

Вопрос в том, куда этот try воткнуть?
DimychX вне форума Ответить с цитированием
Старый 21.06.2011, 09:35   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Это значит, что у тебя выбрасывается повторное исключение в обработчике исключений. Часто служит признаком порчи памяти (если ты портишь память, то у тебя вылетает Access Violation при выделении/освобождении памяти; запускается обработчик исключения - и сам же вылетает с этой же ошибкой при попытке выделить память; снова запускается обработчик, снова вылетает; и так далее; пока не получишь свой законный "too many consecutive exceptions").

Цитата:
Вопрос в том, куда этот try воткнуть?
Тут, скорее, вопрос больше в том, что в нём писать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось Stilet; 22.06.2011 в 12:14.
GunSmoker вне форума Ответить с цитированием
Старый 21.06.2011, 09:42   #6
JetUS
Пользователь
 
Аватар для JetUS
 
Регистрация: 23.09.2009
Сообщений: 27
По умолчанию

Веди лог и посмотри, в каком именно месте оно валиться. Этот кусок кода выложи сюда, потому что с телепатией у нас в последнее время тяжело.
JetUS вне форума Ответить с цитированием
Старый 21.06.2011, 10:03   #7
DimychX
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 26
По умолчанию

Я тоже подозревал, что дело с выделением памяти. А как вести лог?

Может кто-нибудь подскажет, как можно узнать объем занятой динамической памяти. В Паскале была дежурная функция MemAvail, а как сейчас быть?

Последний раз редактировалось Stilet; 22.06.2011 в 12:15.
DimychX вне форума Ответить с цитированием
Старый 21.06.2011, 17:20   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
В Паскале была дежурная функция MemAvail, а как сейчас быть?
Менеджер памяти Delphi 2010 не ведёт статистический учёт. Но эту статистику можно собирать самому - установив фильтр на менеджер памяти. Делается это вызовом SetMemoryManager.

Ссылки для чтения:
http://www.gunsmoker.ru/2009/01/blog-post.html
http://www.gunsmoker.ru/2009/05/blog-post_24.html
http://www.gunsmoker.ru/2010/02/redux.html
http://www.gunsmoker.ru/2010/03/blog-post.html
http://www.gunsmoker.ru/2011/04/windows.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.06.2011, 17:30   #9
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

DimychX, как вариант попробуй заюзать EurekaLog - http://www.eurekalog.com/index_delphi.php

p.s. Где-то тут на форуме кто-то выкладывал юнит для ведения логово...вот только не могу найти...может кто-то еще даст ссылку...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 21.06.2011, 17:35   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

У меня большие сомнения, что логгер исключений здесь поможет. Только не с "too many consecutive exceptions". Уж если программа валится со штатным кодом, то внедрение ловушек трейсера в обработчики исключений лишь увеличит размер кода, выполняющегося при возникновении исключения. Т.е. сделает ситуацию только хуже.

Хотя, проверить это, конечно, надо в первую очередь. Я не уверен на 100%.

Ещё под отладчиком погонять.

Итого, три опции:
1). Трейсер (EurekaLog, madExcept, jclHookExcept).
2). Менеджер памяти в отладочном режиме.
3). Отладчик.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при работе делфи astramorela Операционные системы общие вопросы 2 03.02.2011 14:24
Непонятная ошибка при работе программы Вампирёнок Общие вопросы Delphi 7 24.01.2011 23:41
Ошибка в работе программы Wefast Помощь студентам 1 25.12.2009 08:13
Как получить последнее значение при работе программы voron29 Общие вопросы Delphi 1 27.02.2009 12:22
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 15:10