Compartilhar via


Serviços de diagnóstico

A biblioteca Microsoft Foundation Class fornece muitos serviços de diagnóstico que tornam a depuração de programas mais fácil.Esses serviços de diagnóstico incluem macros e funções globais que permitem controlar a memória do programa alocações, despejar o conteúdo de objetos de tempo de execução e imprimir mensagens de depuração durante o tempo de execução.Macros e funções globais para serviços de diagnóstico são agrupadas nas seguintes categorias:

  • Macros de diagnóstico gerais

  • Variáveis e funções de diagnóstico gerais

  • Funções de diagnóstico de objeto

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

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

#define new DEBUG_NEW

no arquivo de implementação, todas as chamadas nova armazenará o número de linha e o nome do arquivo 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 suporta 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 de biblioteca de tempo de execução.

Macros de diagnóstico geral MFC

ASSERT

Imprime uma mensagem e em seguida, anular o programa se a expressão especificada for avaliada como FALSE na versão de depuraçã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 seu AssertValid função de membro; normalmente substituído 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.

DEBUG_ONLY

Semelhante a ASSERT , mas não testa o valor da expressão; útil para código que deve ser executado somente no modo de depuração.

RASTREAMENTO

Fornece printf-como recurso na versão de depuração da biblioteca.

VERIFICAR

Semelhante a ASSERT , mas avalia a expressão na versão da biblioteca, bem como na versão de depuração.

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

afxDump

Variável global que envia CDumpContext informações na janela de saída do depurador ou para o terminal de depuração.

afxMemDF

Variável global que controla o comportamento do alocador de memória depuração.

AfxCheckError

Variável global usada para testar o passado SCODE para ver se é um erro e, em caso afirmativo, lança o erro apropriado.

AfxCheckMemory

Verifica que a integridade de todos os memória alocada no momento.

AfxDump

Se chamado enquanto no depurador, descarta o estado de um objeto durante a depuração.

AfxDumpStack

Gere uma imagem da pilha atual.Esta função está sempre vinculada estaticamente.

AfxEnableMemoryLeakDump

Permite que o despejo de vazamento de memória.

AfxEnableMemoryTracking

Ativa o rastreamento e desativação de memória.

AfxIsMemoryBlock

Verifica um bloco 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 seqüência 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 todos os CObject-derivadas de classes que oferecem suporte a verificação de tipos em tempo de execução.

AfxDoForAllObjects

Executa uma função especificada em todos os CObject-derivado objetos que foram alocados com nova.

Consulte também

Conceitos

Globais e Macros do MFC