2009-10-20 6 views
9

Eine unserer .NET 2.0-Anwendungen begann nur zufällig zu verschwinden. Es gibt keine Datensätze im Ereignisprotokoll, Dr. Watson generiert keinen Absturzspeicherauszug, nichts ...Wie Problembehebung .NET-Anwendung, die einfach verschwindet?

Wie Sie diese Anwendung beheben?

+0

Machst du p/invoke Anrufe? –

+0

Nicht direkt. Wir verwenden Crystal Reports, die solche Anrufe tätigen können. Jedenfalls hat die Anwendung für ein Jahr ohne Probleme gearbeitet. – alex

+0

Verwenden Sie COM-Komponenten? –

Antwort

5

1) Hängen Sie einen Ereignishandler an das Ereignis AppDomain.UnhandledException an und protokollieren Sie das Ausnahmeobjekt.

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

2) Anfügen eines Fadenausnahmebehandler

Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

für WPF und Silver Anwendungen Sie mehr Ausnahmeroutinen verwenden, z.B. Application.DispatcherUnhandledException bzw. Application.UnhandledException, aber diese sind in diesem Szenario nicht von Interesse. Ich schließe sie der Vollständigkeit halber ein.

+1

Es wird behandelt - kein Protokollsatz. – alex

2

Ändern Sie den Code so, dass Protokollschritte nach jedem relevanten Abschnitt eingefügt werden, und überprüfen Sie dann die Protokolldatei, um zu sehen, wohin sie geht.

Wenn es nicht einmal starten, dann Sie das wird auch etwas sagen ...

3

Wir hatten ein ähnliches Problem. Wir hatten ein Ereignis für die AppDomain.UnhandledException, aber dies wurde sogar übersprungen. Es stellte sich heraus, dass es sich um eine SystemAccessViolation handelte, die beim Testen des Inhalts der Zwischenablage verursacht wurde.

Wenn es ähnlich ist (EG überspringt AppDomain.UnhandledException Ereignis), dann würde ich vorschlagen, alles rund um Interop und 'feindliche' Datenanrufe von außerhalb Ihres Prozesses und Code überprüfen Sie alles protokollieren. Es hat einige Wochen gedauert, bis wir ihn gefunden hatten, und eine Änderung in einer Zeile, um das Problem zu beheben.

Aktivieren Sie auch MDAs in VS und führen Sie Ihr Programm mit ihm und sehen Sie, ob Sie Fehler erhalten.

Verwandte Themen