.NET - Exception Listener der ersten Wahl für intensives Debugging?

8

Dies ist wahrscheinlich unrealistisch, aber wäre es möglich, einer Komponente zu ermöglichen, über alle in ihrem Prozess auftretenden ersten zufälligen Ausnahmen benachrichtigt zu werden?

Wir haben einige (von uns beauftragte) Dritte, die nichts anderes machen, als Außergewöhnliches zu essen, und die Politik der Geschäftsbeziehung macht die ganze Tortur zu einem königlichen Schmerz.

Wir sind uns auch bewusst, dass ein Teil unseres Codes die enttäuschende Aktion ausführt, Ausnahmen in den Abgrund verschwinden zu lassen, anstatt unseren zentralisierten Ausnahme-Logger zu verwenden.

Ich gehe davon aus, dass unsere Anwendung als untergeordneter Prozess einer Debugging-Anwendung gestartet werden müsste, um den Effekt zu erzielen, aber ich denke, es lohnt sich zu fragen:)

    
STW 04.06.2009, 18:31
quelle

2 Antworten

2

Net 4.0 hat das Ereignis AppDomain.FirstChanceException hinzugefügt. Es wird ausgelöst, bevor ein catch-Block ausgeführt wird.

Dieser MSDN-Artikel enthält einige Beispiele.

Im Prinzip fügen Sie einfach einen Event-Handler hinzu:

%Vor%     
HugoRune 20.02.2013, 11:23
quelle
7

Sie können die .net-Profilierungs-API verwenden, um Benachrichtigungen über Ausnahmen in allen möglichen Zuständen zu erhalten. Dies sind die verfügbaren Methoden:

%Vor%

Mit der Profiling-API ist nicht ganz für schwache Nerven; Sehen Sie sich Ссылка als Einstiegspunkt für Ihre Recherche an und Ссылка zur Ausnahmebehandlung speziell.

Ich kenne keine einfache Möglichkeit, dies innerhalb Ihres verwalteten Codes wie

zu tun %Vor%

Ereignis oder ähnliches.

BEARBEITEN: Eine möglicherweise bessere Alternative ist stattdessen die nicht verwaltete Debugging-API .

Grundsätzlich können Sie eine ICorManagedCallback / ICorManagedCallback2 Rückruf mithilfe von ICorDebug :: SetManagedHandler und Rückrufe erhalten, wenn Ausnahmen auftreten.

Ich bin in diesem Bereich nicht erfahren genug, um zu wissen, welche Vorteile / Nachteile gegenüber der Profiling-API bestehen.

Ich habe mir gerade das Beispiel mdgb angeschaut , die die ICorDebug-APIs verwendet und scheinbar genug Benachrichtigungen von Ausnahmen erhält (um schnell zu sehen, welche Ereignisse auftreten, setzen Sie einen Haltepunkt in der HandleEvent-Methode in corapi / Debugger.cs: 406)

    
Ben Schwehn 04.06.2009 18:42
quelle