2008-08-14 20 views
0

Ich habe eine DLL mit einigen COM-Objekte. Manchmal stürzt dieses Objekt ab und registriert ein Fehlerereignis im Windows-Ereignisprotokoll mit vielen hexadezimalen Informationen. Ich habe keine Ahnung, warum das abstürzt.Wie verfolgen Sie COM-Objekte Ausnahmen?

Also, wie kann ich diese COM-Objekte Ausnahmen verfolgen?

Antwort

2

Der erste Schritt besteht darin, den Hex-Wert des Fehlercodes zu suchen (E.G. E_FAIL 0x80004005). Ich hatte wirklich viel Glück dabei, diesen Wert in Google zu posten, um einen Eindruck davon zu bekommen, was der Fehlercode bedeutet.

Dann versuche ich nur Versuch und Irrtum zu versuchen, den Ort in Code, der versagt, und die Ursache des Fehlers zu isolieren.

1

Wenn Sie nur einen schnellen Weg finden möchten, um herauszufinden, was der Fehlercode bedeutet, können Sie das Tool "Error Lookup" verwenden, das mit Visual Studio geliefert wird (Details here). Geben Sie den Hexadezimalwert ein, und Sie erhalten die Zeichenfolge, die diesen Fehlercode beschreibt.

Natürlich, sobald Sie das wissen, müssen Sie immer noch herausfinden, warum es passiert.

1

Eine gute Möglichkeit, Fehler (Hresult) -Codes nachzuschlagen, ist HResult Plus oder welt.exe (Windows Error Lookup Tool).

Ich benutze Protokollierung intern in den COM-Klassen, um zu sehen, was vor sich geht. Nachdem die COM-Klasse von der ausführbaren Datei geladen wurde, können Sie auch den VS-Debugger anhängen und den COM-Code mit Haltepunkten, Uhren und all dem Spaß-Zeug debuggen.

1

COM-Objekte werfen keine Ausnahmen. Sie geben HRESULTs zurück, von denen die meisten einen Fehler anzeigen. Wenn Sie also nach einer Ausnahme-Stack-Ablaufverfolgung suchen, haben Sie kein Glück. Sie müssen den Code von Hand durchgehen und herausfinden, was vor sich geht.