Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programm "crasht" nach dem Schließen (https://www.delphipraxis.net/164570-programm-crasht-nach-dem-schliessen.html)

stefanj 18. Nov 2011 16:19

Programm "crasht" nach dem Schließen
 
Hi,

ich habe bei der Benutzung meines Programmes auf einem Rechner mit Betriebssystem Windows Server 2003, dass er mir
die Meldung "Das Programm ... musste auf Grund eines Fehlers beendet werden." (sinngemäß)
Anscheinend schließt mein Programm nicht richtig. Auf meinem Win7-PC passiert nix Dergleichen.
Lediglich das Delphi-Symbol blinkt in der Taskleiste, wenn ich mein Programm beende, gibt mir aber keine Fehlermeldung.

Ich benutze Delphi 7, das Programm (eine XML-Schnittstelle) beinhaltet einen IdHTTP-Server, eine MSXML2-Unit zum Auslesen von XML-Dateien
und greift mittels ADO auf Foxpro-Datenbanken zu.

Ich bekomme dieses blinkende Delphi-Logo in der Taskleiste (scheint wohl irgendwas faul zu sein ;) ) immer erst dann, wenn eine HTTP-Anfrage reinkam und er eine xml ausliest, aus der Foxpro-DB liest, eine andere XML erstellt und diese verschickt.

Gibts ne Möglichkeit den Fehler konkreter "sichtbar" zu machen?


Grüße,
Stefan

mjustin 18. Nov 2011 18:33

AW: Programm "crasht" nach dem Schließen
 
madExcept (http://madshi.net/madExceptDescription.htm) kann detaillierte Callstacks der Absturzstelle erstellen, und ist für nichtkommerzielle Nutzung kostenlos ("free for non-commercial usage"). (und die kommerzielle Version ist nicht teuer)

In den Bugreport - Callstacks sieht man dann die Prozedurnamen und Zeilennummern, z.B.

Code:
executable       : MadXSender.exe
exec. date/time  : 2011-03-31 12:04
compiled with    : Delphi 2009
madExcept version : 3.0m
callstack crc    : $dda1fab7, $8adccffc, $8adccffc
exception number : 1
exception class  : EInOutError
exception message : I/O error 6.

main thread ($388):
004b8ea9 +091 MadXSender.exe MainFrm    86 +10 TMainForm.DoRaise <-- in Zeile 86 ist es passiert
004b956d +031 MadXSender.exe MainFrm   184  +6 TMainForm.BtnRaiseClick
004957f3 +06f MadXSender.exe Controls          TControl.Click
00483032 +01e MadXSender.exe StdCtrls          TCustomButton.Click
00483aa0 +010 MadXSender.exe StdCtrls          TCustomButton.CNCommand
...
Die Callstacks werden dann in einer Datei gespeichert, man kann sie aber auch über Mail oder HTTP an andere Stellen weiterleiten.

Alternativen sind: Remote Debugger, Logger

Hope this helps

stahli 18. Nov 2011 18:44

AW: Programm "crasht" nach dem Schließen
 
EurekaLog ist sehr zu empfehlen, aber nicht kostenfrei.

Bernhard Geyer 18. Nov 2011 19:16

AW: Programm "crasht" nach dem Schließen
 
Also wir haben für unser Exe's ein digitales Zertifikat und nehmen bei WinQual teil.
Wenn dein Absturz zu einem Fehler führt und Windows meint den "Wollen Sie diesen Fehler an Microsoft senden" anzeigt und auch der Anwender dieses Zulässt kannst du über den gemeldeten Minidump und WinDebug von MS auch dir den Callstack geben lassen.

Konnte damit letzte Woche 2 Fehler der Art: "Da braucht man nicht absicher, das klappt schon immer" fixen.

stefanj 18. Nov 2011 20:24

AW: Programm "crasht" nach dem Schließen
 
Vielen Dank für die Antworten.
Ich werde die Tipps in den nächsten Tagen anwenden (oder es versuchen ;-) ).

Viele Grüße

stefanj 24. Nov 2011 11:06

AW: Programm "crasht" nach dem Schließen
 
Also MadExcept hat mir endlich einen Fehler gemeldet, allerdings auf einem anderen PC, auf dem ich nicht mit Delphi arbeite.

Im Bugreport bekomme ich folgende Info:

Code:
exception number : 1
exception class  : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 005077FA in Modul 'MANCOSy XML-Interface.exe'. Lesen von Adresse 021E1480.

thread $d3c:
>> stack not accessible, exception location:
005077fa +6 MANCOSy XML-Interface.exe ADODB +0 TADOCommand.ClearActiveConnection
Konnte mir schon denken, dass es irgendwo an ADO liegt, allerdings bekomme ich irgendwie keine Exception auf meinem PC.
Kann ich mit den angegeben Speicheradressen rausfinden, auf was er da vergeblich zugreifen möchte oder wer genau das tun will?
Also der Fehler tritt immer beim Schließen des Programms auf. Hatte in FormDestroy schon alle möglichen Dinge wie ADOConnection.Close etc probiert, leider erfolglos.

Grüße

Bernhard Geyer 24. Nov 2011 11:11

AW: Programm "crasht" nach dem Schließen
 
Welche ADO-Version und Version des verwendeten DB-Treibers liegt auf dem Problemrechner vor.
Falls diese zu alt sind könnte es schon krachen.

stefanj 24. Nov 2011 11:49

AW: Programm "crasht" nach dem Schließen
 
Ne, ich benutze die VFPOLEDB für VFP 9.0.
Den gleichen Treiber, den ich auch hier auf der Entwicklermaschine nutze.
Das lustige ist ja, das Programm funktioniert einwandfrei, auch der Zugriff auf FoxPro Tables via ADO etc.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz