Crash Report oder Dump Report

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Crash Report oder Dump Report

Beitrag von lycaner »

Liebe Forums Spezialisten,

ich habe noch eine Frage offen, welche ich Rechechiert habe im Internet, aber nicht fündig geworden bin.
Ich suche eine Möglichkeit einen Crash Report zu erstellen und in eine TXT Datei zu sichern, ggf. auch
per Mail an mich zu senden.
  • MadCollection mit AV Report
  • Eureka Tools
Leider bin ich etwas erfolglos im Netz herum gegeistert, da dieser Begriff nicht's ergibt ausser Delphi und
nicht Lazarus.

Weis jemand ein Package dass man installieren kann wie ebe MadCollection oder Eureka Tools aber für Lazarus ?
Hatt jemand von Euch auch ein Tutorial dazu für das bessere verstehen, wenn es nicht so einfach einzubauen ist
wie in Delphi. Ha Ha Ha.

Danke und beste Grüsse

Chris

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Crash Report oder Dump Report

Beitrag von Christian »

Ne TXT Datei kannst du per Stringlist sichern.
Nen Backtracte bekommst damit
http://lazarus-ccr.sourceforge.net/docs ... trace.html

Verschicken oder irgendwo hochladen kannst die mit Synapse.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Crash Report oder Dump Report

Beitrag von lycaner »

Danke Christian,

echt net für den Link, gibt's irgendwie ein Tutorial zu "DumpExceptionBackTrace" ?
Das mit Save kann ich dann ggf immer noch suchen aber ich verstehe das nicht mit dem "DumpExceptionBackTrace"
Synapse gibt's da auch nähere Dokumentationen dazu ? OK, ich gebe zu zu Synapse hab ich nun noch nicht gesucht.
Aber ich ware den ganzen Tag am suchen zu "DumpExceptionBackTrace"

Hertzlichen Dank und Grüsse

Christian
Christian hat geschrieben:Ne TXT Datei kannst du per Stringlist sichern.
Nen Backtracte bekommst damit
http://lazarus-ccr.sourceforge.net/docs ... trace.html

Verschicken oder irgendwo hochladen kannst die mit Synapse.

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Crash Report oder Dump Report

Beitrag von lycaner »

Hallo Christian,

ich habe noch mals die nacht gebraucht und etwas gefunden.
Leider verstehe ich das nun nicht so ganz, das bei mir nicht klappt wie ich es möchte.

Code: Alles auswählen

 
procedure TDaemon1.writelog(logtype, message: string);
var
  f: TextFile;
  sLogFile :string;
begin
try
  sLogFile:=sAppPath+'daemon.log';
  AssignFile(f, sLogFile);
  if FileExists(sLogFile) then Append(f) else ReWrite(f);
  WriteLn(f, formatdatetime('yyyy_mm_dd_hh_nn_ss',now)+#9+message);
  DumpExceptionBackTrace;
   CloseFile(f);
 except
    on E: Exception do
    begin
     WriteLn(formatdatetime('yyyy_mm_dd_hh_nn_ss',now)+#9+message);
     DumpExceptionBackTrace;
    end;
  end;
end;
 
Die Log wird wohl angelegt wenn ich "message" entferne aber ich denke dass da eigentlich das Log drinnen wäre.
Es steht dann im LOG einfach nur Datum und Zeit. Log wird im "Projekt Ordner" abgelegt, ok kann ich ja biegen.

Ich verstehe nun nicht wie ich zum Teil mit dem eigentlichen AV Message oder Error komme und nicht nur beim Start
der Anwendung sondern immer wenn ein Error passiert.
  • nicht nur beim Programm STart abfangen
  • Während der laufzeit der Anwendung Protokollieren lassen
  • Wie komme ich and den Message Text
  • Sinnvoll oder Sinnfrei über writln zu gehen oder was schlägst Du für nen Weg vor?
  • wie werte ich die AV aus um sie in die Message String oder dann in den txt zu bekommen
Gruss

Christian

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Crash Report oder Dump Report

Beitrag von Christian »

DumpExceptionStackTrace macht nur einen Backtrace wenn eine Exception aufgetreten ist aber auch nur dann macht doch dein Fehlerbericht sinn
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Crash Report oder Dump Report

Beitrag von lycaner »

Hallo Christian,

danke für Deine Antwort,

sorry ich habe ganz vergessen auch meinen Source anzugeben. Hier also mal das Test Projekt.

Code: Alles auswählen

 
procedure TForm1.FormCreate(Sender: TObject);
var
  f: TextFile;
  sLogFile :string;
  message:string;
   e : exception;
 
begin
try
  sLogFile:='daemon.log';
  AssignFile(f, sLogFile);
  if FileExists(sLogFile) then Append(f) else ReWrite(f);
  WriteLn(f, formatdatetime('yyyy mm dd hh:nn:ss',now)+#9+message);
  DumpExceptionBackTrace(f);
   CloseFile(f);
 except
    on E: Exception do
    begin
     WriteLn(formatdatetime('yyyy_mm_dd_hh_nn_ss',now)+#9+message);
     DumpExceptionBackTrace(f);
    end;
   end;
 end;
 
Ich habe es ins OnCreate gesetzt dann wird ein Eintrag gebildet, aber wenn ich den Button AV drücke passiert gar nicht's.
Wie kann ich das nun lösen, dass es mir immer bei einem Exception angibt ohne dass ich überall die Funktion einbinden muss?
Ich möchte dass die Funktion "Global" läuft.

access violation.rar
AV und dump
(124.65 KiB) 49-mal heruntergeladen
Christian hat geschrieben:DumpExceptionStackTrace macht nur einen Backtrace wenn eine Exception aufgetreten ist aber auch nur dann macht doch dein Fehlerbericht sinn
Danke Dir viel mals für Deine Hilfe.

Christian

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6782
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Crash Report oder Dump Report

Beitrag von af0815 »

So was meinst du ? Gerade auspobiert.

Code: Alles auswählen

 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure AppException(Sender: TObject; E: Exception);
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
{ TForm1 }
 
procedure TForm1.AppException(Sender: TObject; E: Exception);
var
  sLogFile: String;
  f: Text;
begin
  sLogFile:='daemon.log';
  if not FileExists(sLogFile) then
  begin
    AssignFile(f, sLogFile);
    ReWrite(f);
  end
  else
  begin
    AssignFile(f, sLogFile);
    Append(f)
  end;
  WriteLn(f, formatdatetime('yyyy mm dd hh:nn:ss',now)+#9+'Exception:'+E.Message);
  DumpExceptionBackTrace(f);
  CloseFile(f);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  raise Exception.Create('Test');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException:=@AppException;
end;
 
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Crash Report oder Dump Report

Beitrag von lycaner »

Hallo Andreas,

vielen Dank für Deinen Vorschlag, den habe ich nun gleich mal Umgesetzt und in das Migränetagebuch Integriert.
http://www.lazarusforum.de/viewtopic.ph ... 8&start=30

Ich habe es nun auch hin bekommen einen Bug Report zu senden.
Scheint also nun zu klappen.

Gruss

Christian

Antworten