Подскажите по EurekaLog

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
У меня в приложении некоторые ситуации обрабатываются путем вызова исключений.

Например
Код:
If Error Then
  Raise Exception.Create('Вы допустили ошибку');

Правильно я понимаю, что в этом случае EurekaLog сформирует окно с предложением отправить сообщение разработчику?

Мне бы хотелось, чтобы в данном случае это видел пользователь, без подключения Eureka.

Так можно?

Или везде надо будет переделывать на Raise MyException, а в Eureka ставить исключение?
 

ils

New member
Регистрация
18.05.2007
Сообщения
16
Реакции
0
Баллы
1
Местоположение
moscow
Что значит "без подключения"? Если проект был скомпилирован с использованием EurekaLog, то на компьютере пользователя никаких дополнительных действий не потребуется.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
В данном случае имелось ввиду, что диалоговое окно с красным крестом должно быть стандартное, виндузовое - без кнопок отправки и т.п.

Смысл в том, что такое окно - это ошибка пользователя (например, не указал обязательное поле). Надо просто сообщить ему об этом. А отправлять разработчику ничего не надо :)
 

koka123

New member
Регистрация
27.04.2009
Сообщения
20
Реакции
5
Баллы
3
Native language | Родной язык
Русский
попробуй отловить своё исключение стандартным обработчиком (try-catch).
насколько я понял принцип действия Eureka Log, она отлавливает не отловленные исключения.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
Если отлавливать свои сообщения, то в try..except будет сложно отделить мои собственные сообщения от тех, которые сгенерит система при сбое.

Я пока сделал так.
Вызываю ошибку как Raise EMyException.Create (пришлось поменять все свои вызовы).
А в EurekaLog поставил исключение на EMyException.

Хотя скорее всего, напишу свой обработчик ошибок, более правильный на мой взгляд, чем EurekaLog :)
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
Я таки написал свой обработчик ошибок. Делает скриншот и отправляет в Mantis, предлагая ввести описание ошибки и имя пользователя.

Потом еще добавлю регистрацию ошибок в БД (чтобы админ мог всё посмотреть).

Мне так больше нравится, чем EurekaLog :)
 

vladgul

New member
Регистрация
27.12.2009
Сообщения
22
Реакции
6
Баллы
3
Native language | Родной язык
Русский
Постоянно пользуюсь EurekaLog на очень больших проектах (больше 1.5 млн строк кода).
Практически единственная вещь, с помощью которой можно отловить и пропущенные ошибки (вызывающие исключения), а также поймать утечки памяти.
Для вашей задачи по моему проще выдавать стандартные диалог форточек с иконкой ошибки.
MessageDlg('Сообщить пользователю об ошибке',mtError,[mbOk],0);
А EurekaLog будет ловить там, где вы что-то действительно упустили.

P.S. Если же вы все таки хотите воспользоваться именно вашим способом, то я видел пример использования EurekaLog (по моему в родном каталоге установки) и там можно было галочкой в процессе выполнения программы влиять будет или не будет задействован механизм отлова ошибок.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
Практически единственная вещь, с помощью которой можно отловить и пропущенные ошибки

Теперь я тоже такое отлавливаю с помощью моей утилиты.

а также поймать утечки памяти.
В общем да. Но для моих задач это не сильно актуально. И потом что - пользователю выдать ошибку об утечке памяти??? Ему это не сдалось совсем.

Для вашей задачи по моему проще выдавать стандартные диалог форточек с иконкой ошибки.
MessageDlg('Сообщить пользователю об ошибке',mtError,[mbOk],0);
Не совсем. Нужно еще как-то предусмотреть возможность отправить или не отправлять ошибку разработчику. Т.е. предусмотреть либо галочку, либо кнопку "Отправить сообщение об ошибке"
Т.е. нужно рисовать свой диалог ошибки.

EurekaLog также меняет диалог сообщений об ошибках в среде разработки (Delphi), что лично мне не нравится.

Плюсы собственной разработки еще в том:
- у меня добавлено окно, где можно описать порядок действий при возникновении ошибки. А также указать ФИО чела и его Email для связи. Иначе приходит безымянное сообщение - и что с ним делать?

- вид сообщения об ошибке можно настроить самому (либо флаг, либо галку);

- можно расширять функционал. Например, добавить функцию журналировать сообщений об ошибках в базу для последующего анализа администратором;


Я сделал выбор в пользу своего модуля :)
 

vladgul

New member
Регистрация
27.12.2009
Сообщения
22
Реакции
6
Баллы
3
Native language | Родной язык
Русский
Не совсем. Нужно еще как-то предусмотреть возможность отправить или не отправлять ошибку разработчику. Т.е. предусмотреть либо галочку, либо кнопку "Отправить сообщение об ошибке"
Т.е. нужно рисовать свой диалог ошибки.
EurekaLog также меняет диалог сообщений об ошибках в среде разработки (Delphi), что лично мне не нравится.

В EurekaLog есть возможность и отправки отчета об ошибке разработчику по почте. И возможность описания ошибки самим пользователем (что и как делал).
Несколько видов окна для с ошибкой. От собственной Eurekalog`овской, до стандартной Windows. Причем все доп. возможности с детальным просмотром информации об ошибке (включая ассемблерный код места ошибки) можно отключить для просмотра.

Занесение в БД конечно нет :), но зачем пользователю в своей БД сохранять Ваши ошибки??? :) (Это же не лог каких-нибудь запрещенных действий пользователя, а именно неадекватное поведение программы не предусмотренное разработчиком.)
И админу потом просматривать это дело?

Задача каким-либо образом поскорее получить отчет по ошибке. Понять и исправить.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
В EurekaLog есть возможность и отправки отчета об ошибке разработчику по почте. И возможность описания ошибки самим пользователем (что и как делал).

Вы, конечно же, правы.
Что в основном меня сподвигло к замене EurekaLog - это много всего по-мелочи.
Во-первых, не нравится вид окна ошибки (смотрел все).
Во-вторых, если постить напрямую в mantis, то в EurekaLog негде описать кто и что делал.
В-третьих, сначала не понравился флаг "сообщить разработчику", думал лучше сделать кнопку. Типа захочет - нажмет. Но потом я вернулся к флагу, т.к. понял, что мало кто нажимать станет :)
В-четвертых, опять же при посте через Mantis, нет указания у кого установлена программа. Вот, у меня, условно коробочный продукт установлен у 10-ти компаний. К кому мне потом обращаться после получения ошибки (если не указали контактной информации)? А так я при сборке системы прописываю ID компании, который публикуется в mantis. Хотя, в Eureka может и есть такая фича, не проверял.

Для админа все же желательно смотреть сообщения об ошибках. Т.к. пользователь может и не запостить сообщение об ошибке (в mantis), а потом выедать мозк - мол, не работало.

Все это мелочи, несущественные. Но как-то накопилось :)
 

candro2

New member
Регистрация
24.09.2008
Сообщения
4
Реакции
1
Баллы
3
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
Есть. Но изначальный топик был про другое. А теперь это вообще не имеет значения ;)
 

vladgul

New member
Регистрация
27.12.2009
Сообщения
22
Реакции
6
Баллы
3
Native language | Родной язык
Русский
Вы, конечно же, правы.
В-четвертых, опять же при посте через Mantis, нет указания у кого установлена программа. Вот, у меня, условно коробочный продукт установлен у 10-ти компаний. К кому мне потом обращаться после получения ошибки (если не указали контактной информации)? А так я при сборке системы прописываю ID компании, который публикуется в mantis. Хотя, в Eureka может и есть такая фича, не проверял.

Вообще, если обнаружилась ошибка у одного клиента, то у другого тоже может вылезти. И не лучше ли не разбираться у кого конкретно, а предложить всем обновить ПО?


По поводу переписывания Raise на MyException и в eurekalog сделать исключение, то скорее всего так и надо делать. Если у вас построен механизм уведомления пользователя через исключения, то пусть это будут ваши спец. исключения. А остальные пусть помогает отловить Eurekalog.
 

demav

Member
Регистрация
20.11.2008
Сообщения
97
Реакции
13
Баллы
8
Возраст
49
Вообще, если обнаружилась ошибка у одного клиента, то у другого тоже может вылезти. И не лучше ли не разбираться у кого конкретно, а предложить всем обновить ПО?
Ну да, конечно.
Поработайте с десятками клиентов, причем у большинства свои версии (ветки) ПО. И тогда обсудим.
 

yyjksw

New member
Регистрация
17.07.2008
Сообщения
20
Реакции
6
Баллы
3
use Eurekalog 7.3 and delphi rx10 Seattle.
200+ single thread no responding....
Windows Server 2008 - Indy and ipWorks IPDaemon unknown error and no responding.

What options do you change?
 

lexie

New member
Регистрация
03.05.2010
Сообщения
1
Реакции
0
Баллы
1
Никто не сталкивался с проблемой, что на ряде компов не отправляется Багрепорт? Просто все зависает. Куда хоть копать.

Посмотреть например, не блокируется ли файрволом.
 

minkus

New member
Регистрация
10.05.2006
Сообщения
3
Реакции
0
Баллы
1
Возраст
48
Местоположение
Moldova
Native language | Родной язык
Русский
Сам использую более 5 лет MadExcept, рекомендую.
 

Soltin

New member
Регистрация
07.02.2016
Сообщения
3
Реакции
0
Баллы
1
А утечку памяти в виндошном сервисе кто-нибудь пробовал ловить с помощью EurekaLog? У меня почему-то после подключения EurekaLog, сервис стал зависать (видимо, в момент возникновения ошибки как раз).
 

=FMA=

New member
Регистрация
01.07.2016
Сообщения
5
Реакции
0
Баллы
1
Native language | Родной язык
Русский
Последнее редактирование модератором:

Soltin

New member
Регистрация
07.02.2016
Сообщения
3
Реакции
0
Баллы
1
Виндошном сервисе = устанавливается как системная служба, которая запускается от системного пользователя.
Попробую FastMM.
Проблема в том, что включение ЕЛ приводит к фризам приложения.
 

=FMA=

New member
Регистрация
01.07.2016
Сообщения
5
Реакции
0
Баллы
1
Native language | Родной язык
Русский
Насчет того, чтобы ЕЛ приводил к зависанию не слышал.
В настройках Eurekalog поставь через сколько выдавать ошибку при зависании программы. Если прога сколько-то времени не отвечает, то ЕЛ автоматом сформирует ошибку.
 
Последнее редактирование модератором:

koka123

New member
Регистрация
27.04.2009
Сообщения
20
Реакции
5
Баллы
3
Native language | Родной язык
Русский
если используется в сервисе, нужно отключить диалог об ошибке, только запись в протокол.
 

JCDenton

New member
Регистрация
15.02.2013
Сообщения
15
Реакции
3
Баллы
3
Мне бы хотелось, чтобы в данном случае это видел пользователь, без подключения Eureka.

Ну как бы надо определиться, как EurekaLog должна отличать эти исключения (которые надо показать пользователю) от всех прочих исключений (который надо отправить разрабу).

В зависимости от ответа на вышеуказанный вопрос (и версии EurekaLog) - можно использовать следующее:
1. Собственный класс исключения (и это, вообще, стоит делать всегда, даже если трейсер исключений не используется).
2. Exception Filters.
3. Событие OnExceptionNotify.
4. Атрибут EurekaLogExpected.
5. Ручная маркировка исключения как "expected".
 
198 097Темы
635 068Сообщения
3 618 395Пользователи
ashot.Новый пользователь
Верх