Nehmen wir an, es gibt ein C#-Programm, das als Windows-Dienst verwendet wird. Nehmen wir an, dass der Dienst verrückt geworden ist und CPU und Speicher wie verrückt verbraucht. Er muss sehr bald neu gestartet werden, da es sich um ein Produktionssystem handelt. Ich habe also nicht viel Zeit, um Laufzeitinformationen zu sammeln. Vielleicht ein kurzer Blick in den Task-Manager ... das ist alles.
Danach bleiben mir nur noch die log4net-Protokolldateien und das Windows-Ereignisprotokoll für die Post-Mortem-Analyse.
Angenommen, ich habe den Grund für das Problem herausgefunden. Jemand anderes behebt es, und vielleicht fügt der Programmierer zusätzliche Protokollierung hinzu, so dass ich ein ähnliches Problem beim nächsten Mal schneller finden kann. Trotzdem: Ich verlasse mich immer noch auf die Qualität der Protokolldateien und hoffe, dass das nächste Mal ein Problem irgendwie in den Protokollen auftaucht.
Gibt es auch andere Möglichkeiten der Post-Mortem-Analyse? Vielleicht so etwas wie Thread-Dumps (wie in Java), Speicher-Dumps oder etwas anderes, das bei der Post-Mortem-Analyse helfen kann? Vielleicht kann ein eingebautes .NET-Framework-Tool helfen?
Ich bin sehr an realen Projekterfahrungen interessiert und daran, wie Sie versuchen würden, diese Wartungsfrage zu lösen, die meiner Meinung nach für die meisten Programmierer sehr real ist.