Question

j'ai un DLL avec une certaine Objets COM.Parfois, cela objecte crash et enregistrez un événement d'erreur dans le journal des événements Windows avec de nombreuses informations hexadécimales.Je n'ai aucune idée de la raison pour laquelle ce crash se produit.

Alors, comment puis-je retracer ces exceptions d’objets COM ?

Était-ce utile?

La solution

La première étape consiste à rechercher la valeur hexadécimale du code d'échec (par ex.E_FAIL0x80004005).J'ai eu vraiment beaucoup de chance en publiant cette valeur dans Google pour avoir une idée de la signification du code d'erreur.

Ensuite, j'utilise simplement des essais et des erreurs pour essayer d'isoler l'emplacement du code qui échoue et la cause première de l'échec.

Autres conseils

Si vous souhaitez simplement découvrir très rapidement la signification du code d'erreur, vous pouvez utiliser l'outil "Recherche d'erreur" fourni avec Visual Studio (détails ici).Entrez la valeur hexadécimale et elle vous donnera la chaîne décrivant ce code d'erreur.

Bien sûr, une fois que vous savez cela, vous devez encore comprendre pourquoi cela se produit.

Un bon moyen de rechercher les codes d'erreur (hresult) est HResult Plus ou welt.exe (Windows Error Lookup Tool).

J'utilise la journalisation en interne dans les classes COM pour voir ce qui se passe.De plus, une fois la classe COM chargée par l'exécutable, vous pouvez y attacher le débogueur VS et déboguer le code COM avec des points d'arrêt, des surveillances et tout ce qui est amusant.

Les objets COM ne lèvent pas d'exceptions.Ils renvoient des HRESULT, dont la plupart indiquent un échec.Donc, si vous recherchez l'équivalent d'une trace de pile d'exceptions, vous n'avez pas de chance.Vous devrez parcourir le code à la main et comprendre ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top