EurekaLog

EurekaLog

EurekaLogarrow-up-right é uma ferramenta avançada de depuração para aplicações Delphi. De acordo com o EurekaLog: "EurekaLog é a ferramenta rastreadora de exceções que dá à sua aplicação a capacidade de capturar todos os bugs no seu código e gera um log detalhado com a pilha de chamadas, que inclui informações de unidade, classe, método e número da linha. Essas informações também são registradas em um arquivo e podem opcionalmente ser encaminhadas para você (desenvolvedor da aplicação) via Internet."

Na maioria das vezes, quando uma exceção ocorre na sua aplicação, você verá uma mensagem na tela do cliente e também uma linha de log no arquivo de log do uniGUI. Essas informações serão úteis apenas se o tipo de exceção for conhecido e você puder reproduzi-la repetidamente. Se a exceção for um AV (Access Violation) aleatório ou qualquer outra exceção que ocorra raramente, pode ser difícil encontrar a origem exata do erro. O EurekaLog ajudará você a encontrar o número exato da linha no seu código-fonte que está gerando a exceção.

O EurekaLog pode funcionar com aplicações uniGUI após fazer algumas alterações na sua configuração e no DPR da aplicação. Após instalar o EurekaLog, abra seu projeto uniGUI e siga os passos abaixo.

1

1. Abra as Opções do EurekaLog e importe as configurações do uniGUI

Vá em "Project -> EurekaLog Options".

clip0116

Selecione Import e escolha o uniGUI.dof arquivo que está disponível na pasta ..\uniGUI\Utils\EurekaLog\.

clip0117

Após a importação ser concluída, pressione OK para continuar.

clip0118
2

2. Edite seu arquivo DPR

No Delphi, abra seu arquivo DPR e adicione a EAppUniGUI unit à cláusula uses para que o DPR fique semelhante a isto:

program Project1doc;

uses

{$IFDEF EurekaLog}
  EMemLeaks,
  EResLeaks,
  ExceptionLog7,
{$ENDIF EurekaLog}

  EAppUniGUI, // adicione esta linha
  Forms,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  Main in 'Main.pas' {MainForm: TUniForm},
  Unit1 em 'Unit1.pas' {UniForm1: TUniForm};

{$R *.res}

begin
  ReportMemoryLeaksOnShutdown := True;
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
end.

Normalmente, o EurekaLog adiciona apenas:

{$IFDEF EurekaLog}
  EMemLeaks,
  EResLeaks,
  ExceptionLog7,
{$ENDIF EurekaLog}

Certifique-se de adicionar manualmente EAppUniGUI à cláusula uses como mostrado acima.

Observação: Dependendo da sua versão do EurekaLog, a diretiva condicional {$IFDEF EurekaLog} pode não ser adicionada automaticamente ao seu código-fonte.

3

3. Adicione código de teste que dispare um AV

Para testar a funcionalidade do EurekaLog, adicione código que intencionalmente gere uma Access Violation (AV):

procedure TMainForm.UniButton2Click(Sender: TObject);
var
  P: Pointer;
begin
  P := nil;
  PInteger(P)^ := 1; // gere um AV aqui
end;

Execute sua aplicação e pressione o botão de teste. Você verá uma simples mensagem de AV na tela e um arquivo de log será criado na pasta do EurekaLog (criada na mesma pasta que sua aplicação).

clip0120

Esse arquivo de log pode ser aberto pelo EurekaLog Viewer.

clip0121
clip0122
4

4. Mostrar informações detalhadas de erro no cliente web (opcional)

Para mostrar um log de erro mais detalhado na tela do cliente da aplicação web, vá em EurekaLog Options e selecione Dialogs. Em Dialogs, marque "Detailed mode".

clip0123

No modo detalhado, a janela de erro mostrará muito mais informações sobre o rastreamento de pilha:

clip0124

Com logs detalhados fornecidos pelo EurekaLog, você pode localizar o local exato no seu código que lança uma exceção, economizando muitas horas de depuração.

circle-exclamation
circle-info

Observação sobre projetos combo ISAPI/Standalone:

Quando seu projeto é um projeto combo e você habilita o EurekaLog, seu projeto pode reconhecer o EurekaLog em apenas um desses modos (ISAPI ou Standalone). Isso acontece porque o EurekaLog não é compatível com o arquivo de projeto combo do uniGUI.

Para resolver esse problema, crie projetos separados para os modos ISAPI e Standalone. Você pode criar um novo projeto ISAPI e importar seus formulários e módulos para ele. Depois de ter projetos separados, você pode adicionar e habilitar o EurekaLog para cada projeto.