Hallo,
bei einem Programmabsturz kannst Du grundsätzlich nicht davon ausgehen, irgendeine Information über den Absturz zu erhalten. Mit ein bisserl Glück erfährst Du eventuell noch etwas, aber darauf verlassen kannst Du Dich nicht.
Vor einiger Zeit hatte ich ein Programm, das ab und an vollkommen unnachvollziehbar herumzickte.
Bin dann, nachdem ich nicht mehr weiterwußte, hergegangen und habe am Anfang und am Ende jeder Funktion/Prozedure den Aufruf einer eigenen Loggingroutine eingebaut. Die bekommt als Parameter einen String mitgegeben und schreibt diesen zusammen mit 'nem Zeitstempel in eine Datei.
Am Anfang der Funktionen/Prozeduren wird einfach nur "Beginn Funktion-/Prozedurname" und am Ende "Ende Funktion-/Prozedurname" geschrieben.
In die eigenen Try-Except-Blöcke habe ich den Aufruf ebenfalls hineingeschrieben und dort wird neben dem Zeitstempel auch noch die von der
Exception ausgegebene Fehlermeldung in die Datei geschrieben.
Hier ist dann Phantasie gefragt, es lassen sich die Inhalte der Aufrufparameter zu den Funktionen/Prozeduren protokollieren, irgendwelche Zustände von Komponenten, Inhalte von Eingabefeldern..., alles das, was bei der Fehlersuche hilfreich sein könnte.
Damit das Ganze nicht zuviel Logdatei ergibt, habe ich über eine Ini-Datei einen Schalter gesetzt, mit dem ich das Logging ein- und ausgeschalten kann. Man könnte auch noch einen Logginglevel einbauen, mit dem über einen Eintrag in der Ini-Datei gesteuert werden kann, wieviel protokolliert wird, indem man der Loggingroutine noch diesen Parameter übergibt und damit steuert, ob eine Ausgabe erfolgt oder nicht. So könnte man für Beginn und Ende einen anderen Level nehmen, als für Ausnahmen.
Lange Rede kurzer Sinn: Durch diese Verfahrensweise habe ich herausbekommen, dass das Programm immer dann anfing zu zicken, wenn auf einem Datenbankserver an einem anderen Standort Abends um 21.30 ein bestimmter Job startete und dadurch die Datenbankverbindung zu diesem Server "irgendwie" beeinträchtigt wurde. Hiermit kam eine Routine nicht zurecht und hat dann irgendwann für ein riesiges Speicherloch gesorgt, bis zum Spürbarwerden des Problemes konnten jedoch Stunden oder Tage vergehen.
Hoffe, Dir damit ein bisserl Anregung, zur hoffentlich erfolgreichen Fehlersuche, geben zu können.