Serviços de diagnóstico

O Microsoft Foundation Biblioteca de classes fornece muitos serviços de diagnósticos que fazem Depurando seus programas mais fácil. Esses serviços de diagnóstico incluem macros e global funções que permitem que você controle a memória do seu programa alocações, despejar o conteúdo de objetos durante o tempo de execução e imprimir mensagens de depuração durante o tempo de execução. As macros e funções global para serviços de diagnóstico são agrupadas nas seguintes categorias:

Essas macros e funções estão disponíveis para todas as classes derivadas de CObject nas versãosões Depurar e versão do MFC. No entanto, todos exceto DEBUG_NEW e VERIFY fazer nada na versão de lançamento.

Na biblioteca de Depurar, todos os blocos de memória alocada são bracketed com uma série de "bytes de guarda". Se esses bytes são perturbados por uma escrita de memória errôneo, as rotinas de diagnósticos podem relatar um problema. Se você incluir a linha

# Definir nova DEBUG_NEW

no arquivo de implementação, todas as chamadas para novo armazenará o nome do arquivo e linha número onde ocorreu a alocação de memória. A função CMemoryState:: DumpAllObjectsSince exibirá essas informações extras, permitindo que você identificar vazamentos de memória. Consulte também a classe CDumpContext para obter informações adicionais sobre a saída de diagnóstico.

Além disso, a biblioteca de tempo de execução c também oferece suporte a um conjunto de funções de diagnóstico que você pode usar para depurar seus aplicativos. Para obter mais informações, consulte Depurar rotinas na Referência da biblioteca Run-Time.

Macros de diagnóstico geral MFC

FAZER VALER Imprime uma mensagem e, em seguida, anular o programa se a expressão especificada for avaliada como FALSE no Depurar versão da biblioteca.
ASSERT_KINDOF Testes que um objeto é um objeto da classe especificada ou de uma classe derivada da classe especificada.
ASSERT_VALID Testa a validade interna de um objeto chamando o função membro AssertValid ; normalmente substituída de CObject.
DEBUG_NEW Fornece um nome de arquivo e linha número para todas as alocações de objeto no modo de depuração para ajudar a localizar vazamentos de memória.
RASTREAMENTO Fornece printf-como recurso na versão de Depurar da biblioteca.
TRACE0 Semelhante ao rastreamento , mas tem um formato seqüência de caracteres com sem argumentos.
TRACE1 Semelhante ao rastreamento , mas tem um formato seqüência de caracteres com um único argumento.
TRACE2 Semelhante ao rastreamento , mas tem um formato seqüência de caracteres com dois argumentos.
TRACE3 Semelhante ao rastreamento , mas tem um formato seqüência de caracteres com três argumentos.
VERIFICAR Mas, semelhante ao ASSERT avalia a expressão na versão de lançamento da biblioteca, bem como na versão de Depurar.

MFC geral diagnóstico variáveis e funções

afxDump Variável global que envia CDumpContext informações para a janela de saída do depurador ou para o terminal de depuração.
afxMemDF Variável global que controla o comportamento da Depurando alocador memória.
afxTraceEnabled Variável global usada para habilitar ou desabilitar a saída da macro de Rastrear.
afxTraceFlags Variável global usada para ativar os recursos de relatórios internos do MFC.
AfxCheckError Variável global usada para testar o passado SCODE para ver se ele é um erro e, em caso afirmativo, lança o erro apropriado.
AfxCheckMemory Verifica que a integridade de todos os memória atualmente alocada.
AfxDump Se chamado enquanto no depurador, descarta o estado de um objeto durante a Depurando.
AfxDumpStack Gere uma imagem da pilha atual. Esta função está sempre vinculada estaticamente.
AfxEnableMemoryTracking Ativa a memória e fora de controle.
AfxIsMemoryBlock Verifica que um Bloquear de memória foi alocado corretamente.
AfxIsValidAddress Verifica se um intervalo de endereços de memória está dentro dos limites do programa.
AfxIsValidString Determina se um ponteiro para uma Cadeia de caracteres é válido.
AfxSetAllocHook Permite a chamada de uma função em cada alocação de memória.

Funções de diagnóstico de objeto do MFC

AfxDoForAllClasses Executa uma função especificada em tudo CObject-derivado classes que oferecem suporte a verificação de tipos em tempo de execução.
AfxDoForAllObjects Executa uma função especificada em tudo CObject-derivado objetos que foram alocados com novo.

Index