Cum de a urmări excepțiile de obiecte COM?

Am un DLL cu unele obiecte COM . Uneori, obiectele se blochează și înregistrează un eveniment de eroare în jurnalul de evenimente Windows cu multe informații hexazecimale. Nu am nici o idee de ce se întâmplă acest accident.

Deci, Cum pot urmări excepțiile de obiecte COM?

0
fr hi bn

4 răspunsuri

Primul pas este să căutați valoarea hexagonală a codului Fail (E.G. E_FAIL 0x80004005). Am avut foarte mult noroc cu postarea acelei valori în Google pentru a înțelege ce înseamnă codul de eroare.

Apoi, folosesc doar încercări și erori pentru a încerca să izolez locația în cod care nu reușește și cauza principală a eșecului.

0
adăugat

Dacă doriți doar o modalitate foarte rapidă de a afla ce înseamnă codul de eroare, puteți utiliza instrumentul "Error Lookup", care este ambalat cu Visual Studio (detalii aici ). Introduceți valoarea hex și veți da șirul care descrie codul de eroare.

Desigur, odată ce știi asta, trebuie să-ți dai seama de ce se întâmplă.

0
adăugat

O modalitate bună de a căuta codurile de eroare (hresult) este HResult Plus sau welt.exe (instrument de căutare a erorilor în Windows).

Folosesc logarea internă în clasele COM pentru a vedea ce se întâmplă. De asemenea, odată ce clasa COM este încărcată de executabil, puteți atașa instrumentul de depanare VS și puteți depana codul COM cu puncte de întrerupere, ceasuri și toate materialele distractive.

0
adăugat

Obiectele COM nu fac excepții. Ei revin HRESULT, majoritatea indicând un eșec. Deci, dacă căutați echivalentul unei urme de stive de excepție, nu aveți noroc. Va trebui să parcurgi codul manual și să dai seama ce se întâmplă.

0
adăugat