Pergunta

Sabendo um código de exceção, existe uma maneira de descobrir mais sobre o que a exceção real que foi lançada significa?

Meu exceção em questão:0x64487347

Endereço de exceção:0 x 1

A pilha de chamadas mostra nenhuma informação.

Eu estou revendo um .dmp de um acidente e, na verdade, não a depuração no Visual Studio.

Foi útil?

Solução

Porque você está revisando um despejo de memória eu vou assumir que ela surgiu a partir de um cliente e você não consegue reproduzir o erro com mais de instrumentação.

Eu não tenho muita ajuda para oferecer salvar a observação de que o código de exceção 0x64487347 é ASCII "dShG", e os desenvolvedores costumam usar as iniciais de rotina ou condição de falha quando fazer backup de números mágicos como este.

Um pouco de pesquisa no google virou um hit para dHsg no contexto adequado, o nome de uma função na pesquisa de livros do Google para "Usando o Visual C++ 6" Por Kate Gregory.Infelizmente, o que por si só não era útil.

Outras dicas

Uma verdadeira exceção de C++ lançada a partir da Microsoft runtime irá ter um SEH código de 0xe06d7363 (E0 + 'mestrado').Você tem alguma outra exceção.

.NET gera SEH exceções com o código 0xe0434f4d (E0 + 'COM').

NT códigos de status são documentados em ntstatus.h, e geralmente começam 0x80 (avisos) ou 0xC0 (erros).A mais famosa é a 0xC0000005, STATUS_ACCESS_VIOLATION.

Se você sabe que bloqueiam jogou a exceptioon, você pode colocar mais manipuladores específicos no bloco catch para tentar isolá-lo de que forma?

Você está lançando uma exceção que rolou mesmo?

Editar:Eu esqueci de apontar para este artigo no Visual C++ exceções que eu encontrei para ser muito útil.

Rob

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