Pergunta

eu tenho um DLL com algum Objetos COM.Às vezes, isso objeta falhas e registre um evento de erro no log de eventos do Windows com muitas informações hexadecimais.Não tenho ideia de por que essas falhas acontecem.

Então, como posso rastrear essas exceções de objetos COM?

Foi útil?

Solução

O primeiro passo é procurar o valor hexadecimal do código de falha (E.G.E_FAIL0x80004005).Tive muita sorte ao postar esse valor no Google para ter uma ideia do que significa o código de erro.

Então, apenas uso tentativa e erro para tentar isolar o local no código que está falhando e a causa raiz da falha.

Outras dicas

Se você deseja apenas uma maneira realmente rápida de descobrir o que significa o código de erro, você pode usar a ferramenta "Error Lookup" fornecida com o Visual Studio (detalhes aqui).Insira o valor hexadecimal e ele fornecerá a string que descreve esse código de erro.

É claro que, depois de saber disso, você ainda precisa descobrir por que isso está acontecendo.

Uma boa maneira de procurar códigos de erro (hresult) é HResult Plus ou welt.exe (ferramenta de pesquisa de erros do Windows).

Eu uso o log internamente nas classes COM para ver o que está acontecendo.Além disso, depois que a classe COM é carregada pelo executável, você pode anexar o depurador VS a ela e depurar o código COM com pontos de interrupção, inspeções e todas essas coisas divertidas.

Objetos COM não lançam exceções.Eles retornam HRESULTs, a maioria dos quais indica uma falha.Portanto, se você está procurando o equivalente a um rastreamento de pilha de exceções, está sem sorte.Você terá que percorrer o código manualmente e descobrir o que está acontecendo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top