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. |