Vra

Ek het 'n DLL met 'n paar COM voorwerpe . Soms, hierdie voorwerpe ineenstortings en registreer 'n fout gebeurtenis in die Windows Gebeurtenis log met baie van die heksadesimale inligting. Ek het geen idee hoekom hierdie ongelukke gebeur.

So, Hoe kan ek spoor diegene COM uitsonderings voorwerpe?

Was dit nuttig?

Oplossing

Die eerste stap is om die Fail-kode se blok waarde lookup (bv E_FAIL 0x80004005). Ek het regtig 'n goeie geluk gehad met die plaas wat waarde in Google om 'n gevoel van wat die fout kode beteken kry.

Toe ek gebruik net trial and error om te probeer om die plek in kode wat versuim, en die oorsaak van die mislukking te isoleer.

Ander wenke

As jy net 'n baie vinnige manier wil om uit te vind wat die fout kode beteken, jy kan die instrument "Fout Lookup" verpak met Visual Studio gebruik (besonderhede hier ). Tik die blok waarde, en dit sal jy die string te beskryf wat fout kode gee.

Natuurlik, as jy weet dat jy het nog steeds om uit te vind hoekom dit gebeur.

'n goeie manier om te kyk up fout (HRESULT) kodes is HRESULT Plus of welt.exe (Windows Fout Lookup Tool).

Ek gebruik intern aan te meld in die COM-klasse om te sien wat aan die gang is. Ook, wanneer die COM-klas is gelaai met die uitvoerbare, kan jy die VS debugger heg aan dit en ontfout die COM-kode met inspeksiepunte, horlosies, en alles wat fun stuff.

COM voorwerpe nie uitsonderings gooi. Hulle keer terug HRESULTs, waarvan die meeste dui op 'n mislukking. So as jy op soek is vir die ekwivalent van 'n uitsondering stapel spoor, jy out of luck. Jy gaan hê deur die kode om te loop met die hand en uit te vind wat aangaan.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top