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

demav

Турист
У меня в приложении некоторые ситуации обрабатываются путем вызова исключений.

Например
Code:
If Error Then
  Raise Exception.Create('Вы допустили ошибку');
Правильно я понимаю, что в этом случае EurekaLog сформирует окно с предложением отправить сообщение разработчику?

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

Так можно?

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

ils

Турист
Что значит "без подключения"? Если проект был скомпилирован с использованием EurekaLog, то на компьютере пользователя никаких дополнительных действий не потребуется.
 

demav

Турист
В данном случае имелось ввиду, что диалоговое окно с красным крестом должно быть стандартное, виндузовое - без кнопок отправки и т.п.

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

koka123

Турист
попробуй отловить своё исключение стандартным обработчиком (try-catch).
насколько я понял принцип действия Eureka Log, она отлавливает не отловленные исключения.
 

demav

Турист
Если отлавливать свои сообщения, то в try..except будет сложно отделить мои собственные сообщения от тех, которые сгенерит система при сбое.

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

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

demav

Турист
Я таки написал свой обработчик ошибок. Делает скриншот и отправляет в Mantis, предлагая ввести описание ошибки и имя пользователя.

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

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

vladgul

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

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

demav

Турист
Практически единственная вещь, с помощью которой можно отловить и пропущенные ошибки
Теперь я тоже такое отлавливаю с помощью моей утилиты.

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

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

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

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

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

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


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

vladgul

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

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

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

demav

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

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

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

candro2

Турист
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
 

demav

Турист
Помоему у EurekaLog есть возможность указать исключения на которые он не должен реагировать. Т.е будет обрабатываться стандартно.
Есть. Но изначальный топик был про другое. А теперь это вообще не имеет значения ;)
 

vladgul

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


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

demav

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

yyjksw

Турист
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?
 
Top