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

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
У меня в приложении некоторые ситуации обрабатываются путем вызова исключений.

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

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

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

Так можно?

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

ils

Турист
Регистрация
18 Май 2007
Сообщения
16
Реакции
0
Credits
24
Что значит "без подключения"? Если проект был скомпилирован с использованием EurekaLog, то на компьютере пользователя никаких дополнительных действий не потребуется.
 

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
В данном случае имелось ввиду, что диалоговое окно с красным крестом должно быть стандартное, виндузовое - без кнопок отправки и т.п.

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

koka123

Местный
Регистрация
27 Апр 2009
Сообщения
20
Реакции
5
Credits
63
попробуй отловить своё исключение стандартным обработчиком (try-catch).
насколько я понял принцип действия Eureka Log, она отлавливает не отловленные исключения.
 

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Если отлавливать свои сообщения, то в try..except будет сложно отделить мои собственные сообщения от тех, которые сгенерит система при сбое.

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

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

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Я таки написал свой обработчик ошибок. Делает скриншот и отправляет в Mantis, предлагая ввести описание ошибки и имя пользователя.

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

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

vladgul

Местный
Регистрация
27 Дек 2009
Сообщения
48
Реакции
10
Credits
22
Постоянно пользуюсь EurekaLog на очень больших проектах (больше 1.5 млн строк кода).
Практически единственная вещь, с помощью которой можно отловить и пропущенные ошибки (вызывающие исключения), а также поймать утечки памяти.
Для вашей задачи по моему проще выдавать стандартные диалог форточек с иконкой ошибки.
MessageDlg('Сообщить пользователю об ошибке',mtError,[mbOk],0);
А EurekaLog будет ловить там, где вы что-то действительно упустили.

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

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Практически единственная вещь, с помощью которой можно отловить и пропущенные ошибки

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

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

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

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

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

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

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


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

vladgul

Местный
Регистрация
27 Дек 2009
Сообщения
48
Реакции
10
Credits
22
Не совсем. Нужно еще как-то предусмотреть возможность отправить или не отправлять ошибку разработчику. Т.е. предусмотреть либо галочку, либо кнопку "Отправить сообщение об ошибке"
Т.е. нужно рисовать свой диалог ошибки.
EurekaLog также меняет диалог сообщений об ошибках в среде разработки (Delphi), что лично мне не нравится.

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

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

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

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
В EurekaLog есть возможность и отправки отчета об ошибке разработчику по почте. И возможность описания ошибки самим пользователем (что и как делал).

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

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

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

candro2

Турист
Регистрация
24 Сен 2008
Сообщения
4
Реакции
1
Credits
8
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
 

demav

Местный
Регистрация
20 Ноя 2008
Сообщения
97
Реакции
13
Credits
158
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
Есть. Но изначальный топик был про другое. А теперь это вообще не имеет значения ;)
 

vladgul

Местный
Регистрация
27 Дек 2009
Сообщения
48
Реакции
10
Credits
22
Вы, конечно же, правы.
В-четвертых, опять же при посте через Mantis, нет указания у кого установлена программа. Вот, у меня, условно коробочный продукт установлен у 10-ти компаний. К кому мне потом обращаться после получения ошибки (если не указали контактной информации)? А так я при сборке системы прописываю ID компании, который публикуется в mantis. Хотя, в Eureka может и есть такая фича, не проверял.

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


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

demav

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

yyjksw

Местный
Регистрация
17 Июл 2008
Сообщения
20
Реакции
6
Credits
26
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?