Domanda

Ho un DLL con qualche oggetti COM.A volte, questo obietta si blocca e registra un evento di errore nel registro eventi di Windows con molte informazioni esadecimali.Non ho idea del motivo per cui si verifica questo arresto anomalo.

Quindi, come posso tracciare le eccezioni degli oggetti COM?

È stato utile?

Soluzione

Il primo passo è cercare il valore esadecimale del codice Fail (E.G.E_FAIL 0x80004005).Ho avuto davvero fortuna nel pubblicare quel valore su Google per avere un'idea del significato del codice di errore.

Quindi, utilizzo semplicemente tentativi ed errori per provare a isolare la posizione nel codice che non funziona e la causa principale dell'errore.

Altri suggerimenti

Se desideri solo un modo davvero rapido per scoprire cosa significa il codice di errore, puoi utilizzare lo strumento "Ricerca errori" fornito con Visual Studio (dettagli Qui).Inserisci il valore esadecimale e ti darà la stringa che descrive quel codice di errore.

Naturalmente, una volta che lo sai, devi ancora capire perché sta accadendo.

Un buon modo per cercare i codici di errore (hresult) è HResult Plus o welt.exe (strumento di ricerca errori di Windows).

Utilizzo la registrazione internamente nelle classi COM per vedere cosa sta succedendo.Inoltre, una volta che la classe COM è stata caricata dall'eseguibile, puoi collegarvi il debugger VS ed eseguire il debug del codice COM con punti di interruzione, orologi e tutte quelle cose divertenti.

Gli oggetti COM non generano eccezioni.Restituiscono HRESULT, la maggior parte dei quali indica un errore.Quindi, se stai cercando l'equivalente di un'analisi dello stack delle eccezioni, sei sfortunato.Dovrai scorrere manualmente il codice e capire cosa sta succedendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top