Compartilhar via


Serviços de diagnóstico

A biblioteca de classes do Microsoft fornece muitos serviços de diagnóstico que facilitam depurar seus programas. Esses serviços de diagnóstico incluem macros e as funções globais que permitem rastrear as alocações de memória do programa, despejam o conteúdo dos objetos durante o tempo de execução, e aparecem em mensagens de depuração durante o tempo de execução. Macros e as funções globais para serviços de diagnóstico são agrupados nas seguintes categorias:

  • Macros de diagnóstico gerais

  • Funções e variáveis de diagnóstico gerais

  • Funções de diagnóstico de objeto

Esses macros e funções estão disponíveis para todas as classes derivadas de CObject na depuração e nas versões de inicialização MFC. Porém, todos exceto DEBUG_NEW e VERIFY não faz nada na versão lançada.

Na biblioteca de depuração, todos os blocos de memória alocado são suportados com uma série de “bytes de protetor”. Se esses bytes são perturbados por uma gravação usuário errôneo de memória, 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 a new armazenarão o nome do arquivo e o número da linha onde ocorreu a alocação de memória. A função CMemoryState::DumpAllObjectsSince exibirá essas informações adicionais, permitindo que você identificar possíveis vazamentos de memória. Consulte também a classe CDumpContext para obter informações adicionais sobre saídas 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 Rotinas de depuração na referência da biblioteca de tempo de execução.

Macros de diagnóstico gerais de MFC

AFIRMAR

Imprime uma mensagem e nulos no programa se a expressão especificada for avaliada como Falso na versão de depuração de biblioteca.

ASSERT_KINDOF

Teste 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 a função de membro de AssertValid ; substituído normalmente de CObject.

DEBUG_NEW

Fornece um nome de arquivo e um número de linha para todas as alocações do objeto no modo de depuração para ajudar a localizar possíveis vazamentos de memória.

DEBUG_ONLY

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

TRACE

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

Restrição CHECK

Semelhante a DECLARAR mas avalia a expressão na versão lançada da biblioteca assim como a versão de depuração.

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

afxDump

A variável global que envia as informações de CDumpContext à janela saída do depurador ou ao terminal de depuração.

afxMemDF

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

AfxCheckError

A variável global usado para testar SCODE passado para ver se é um erro e, nesse caso, ele gerencie o erro apropriado.

AfxCheckMemory

Verifica a integridade de qualquer memória alocada atualmente.

AfxDump

Se for chamado quando o depurador, despejos o estado de um objeto na depuração.

AfxDumpStack

Gerencia uma imagem de pilhas atual. Essa função é vinculada sempre estaticamente.

AfxEnableMemoryLeakDump

Permite despejo de vazamento de memória.

AfxEnableMemoryTracking

Controle de memória de voltas ativa e desativa.

AfxIsMemoryBlock

Verifica se um bloco de memória está atribuída corretamente.

AfxIsValidAddress

Verifica se um intervalo de endereço de memória está dentro dos limites do programa.

AfxIsValidString

Determina se um ponteiro para uma cadeia de caracteres é válido.

AfxSetAllocHook

Habilita a chamada de uma função em cada alocação de memória.

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

AfxDoForAllClasses

Executa uma função especificada em qualquer CObject- classes derivadas que dão suporte à verificação de tipo em tempo de execução.

AfxDoForAllObjects

Executa uma função especificada em qualquer CObject- os objetos derivados que foram atribuídos com new.

Consulte também

Conceitos

Macros e globais MFC