2008-09-14 11 views
1

Connaissant un code d'exception, existe-t-il un moyen d'en savoir plus sur ce que signifie l'exception réelle qui a été lancée?Recherche de code d'exception C++

Mon exception en question: 0x64487347

adresse d'exception: 0x1

La pile d'appel montre aucune information.

Je suis en train de passer en revue un .dmp d'un accident et pas réellement de débogage dans Visual Studio.

Répondre

4

Parce que vous commentez un vidage sur incident je suppose qu'il est venu d'un client et vous ne pouvez pas reproduire facilement la faute avec plus d'instrumentation. Je n'ai pas beaucoup d'aide à offrir sauf pour noter que le code d'exception 0x64487347 est ASCII "dShG", et les développeurs utilisent souvent les initiales de la condition de routine ou de défaut lors de la création de nombres magiques comme ceci.

Un peu googling a atteint un hit pour dHsg dans le contexte approprié, le nom d'une fonction dans une recherche de Google Book pour "Utilisation de Visual C++ 6" par Kate Gregory. Malheureusement, cela seul n'a pas été utile.

+0

cool Je n'ai jamais su cela sur le nombre magique dans le code d'exception. –

0

Si vous savez quel bloc a lancé l'exception, pouvez-vous placer des gestionnaires plus spécifiques dans le bloc catch pour essayer de l'isoler de cette façon?

Lancez-vous une exception que vous avez vous-même lancée?

Modifier: J'ai oublié de vous pointer vers this article sur les exceptions Visual C++ que j'ai trouvées très utiles.

Rob

6

Une exception C++ réelle générée par le moteur d'exécution de Microsoft aura un code SEH de 0xe06d7363 (E0 + 'msc'). Vous avez une autre exception.

.NET génère des exceptions SEH avec le code 0xe0434f4d (E0 + 'COM').

Les codes d'état de NT sont documentés dans ntstatus.h et démarrent généralement 0x80 (avertissements) ou 0xC0 (erreurs). Le plus célèbre est 0xC0000005, STATUS_ACCESS_VIOLATION.