Rotinas de depuração
A versão de depuração da biblioteca de runtime C fornece vários serviços de diagnóstico que facilitam a depuração de programas e permitem aos desenvolvedores:
Ir diretamente para as funções em tempo de execução durante a depuração
Resolver declarações, erros e exceções
Rastrear alocações de heap e prevenir perdas de memória
Relatar mensagens de depuração para o usuário
Versões de depuração das rotinas da biblioteca de runtime C
Para usar essas rotinas, o _DEBUG
sinalizador deve ser definido. Todas essas rotinas não executam nenhuma ação em um build de varejo de um aplicativo. Para obter mais informações sobre como usar as novas rotinas de depuração, consulte Técnicas de depuração de CRT.
Rotina | Usar |
---|---|
_ASSERT |
Avalie uma expressão e gere um relatório de depuração quando o resultado for FALSE |
_ASSERTE |
Semelhante a _ASSERT , mas inclui a expressão com falha no relatório gerado |
_CrtCheckMemory |
Confirma a integridade dos blocos de memória alocados no heap de depuração |
_CrtDbgBreak |
Define um ponto de interrupção. |
_CrtDbgReport , _CrtDbgReportW |
Gera um relatório de depuração com uma mensagem do usuário e envia o relatório para três destinos possíveis |
_CrtDoForAllClientObjects |
Chama uma função fornecida pelo aplicativo para todos os tipos _CLIENT_BLOCK no heap |
_CrtDumpMemoryLeaks |
Despeja todos os blocos de memória no heap de depuração quando ocorre uma perda de memória significativa |
_CrtIsMemoryBlock |
Verifica se um bloco de memória especificado está localizado no heap local e se ele tem um identificador de tipo de bloco de heap de depuração válido |
_CrtIsValidHeapPointer |
Verifica se um ponteiro especificado está no heap local |
_CrtIsValidPointer |
Verifica se um intervalo de memória especificado é válido para leitura e gravação |
_CrtMemCheckpoint |
Obtém o estado atual do heap de depuração e o armazena em uma estrutura _CrtMemState fornecida pelo aplicativo |
_CrtMemDifference |
Compara dois estados de memória em busca de diferenças significativas e retorna os resultados |
_CrtMemDumpAllObjectsSince |
Despeja informações sobre objetos no heap desde a realização de um ponto de verificação especificado ou do início da execução do programa |
_CrtMemDumpStatistics |
Despeja as informações do cabeçalho de depuração de um estado de memória especificado em um formato legível pelo usuário |
_CrtReportBlockType |
Retorna o tipo/subtipo do bloco associado a determinado ponteiro de bloco do heap de depuração. |
_CrtSetAllocHook |
Instala uma função de alocação definida pelo cliente vinculando-a ao processo de alocação de memória de depuração em tempo de execução C |
_CrtSetBreakAlloc |
Define um ponto de interrupção em um número de ordem de alocação de objeto especificado |
_CrtSetDbgFlag |
Recupera ou modifica o estado do sinalizador _crtDbgFlag para controlar o comportamento de alocação do gerenciador de heap de depuração |
_CrtSetDumpClient |
Instala uma função definida pelo aplicativo que é chamada sempre que uma função de despejo de depuração é chamada para despejar blocos de memória do tipo _CLIENT_BLOCK |
_CrtSetReportFile |
Identifica o arquivo ou o fluxo a ser usado como um destino para um tipo de relatório específico por _CrtDbgReport |
_CrtSetReportHook |
Instala uma função de relatório definida pelo cliente vinculando-a ao processo de relatório de depuração em tempo de execução C |
_CrtSetReportHook2 , _CrtSetReportHookW2 |
Instala ou desinstala uma função de relatório definida pelo cliente vinculando-a ao processo de relatório de depuração em tempo de execução C. |
_CrtSetReportMode |
Especifica os destinos gerais para um tipo de relatório específico gerado por _CrtDbgReport |
_RPT[0,1,2,3,4] |
Acompanha o progresso do aplicativo gerando um relatório de depuração por meio da chamada a _CrtDbgReport com uma cadeia de formato e um número variável de argumentos. Não fornece informações sobre o arquivo de origem e o número de linha. |
_RPTF[0,1,2,3,4] |
Semelhante às macros _RPTn , mas fornece o nome do arquivo de origem e o número de linha que deu origem à solicitação de relatório |
_calloc_dbg |
Alocar um número especificado de blocos de memória no heap com espaço extra para um cabeçalho de depuração e substituir buffers |
_expand_dbg |
Redimensiona um bloco especificado de memória no heap pela expansão ou contração do bloco |
_free_dbg |
Libera um bloco de memória no heap |
_fullpath_dbg , _wfullpath_dbg |
Cria um nome de caminho absoluto ou completo para o nome de caminho relativo especificado, usando _malloc_dbg para alocar memória. |
_getcwd_dbg , _wgetcwd_dbg |
Obtém o diretório de trabalho atual, usando _malloc_dbg para alocar memória. |
_malloc_dbg |
Alocar um bloco de memória no heap com espaço extra para um cabeçalho de depuração e substituir buffers |
_msize_dbg |
Calcula o tamanho de um bloco de memória no heap |
_realloc_dbg |
Realoca um bloco de memória especificado no heap pela movimentação e/ou pelo redimensionamento do bloco |
_strdup_dbg , _wcsdup_dbg |
Duplica uma cadeia de caracteres usando _malloc_dbg para alocar memória. |
_tempnam_dbg , _wtempnam_dbg |
Gera nomes que podem ser usados para criar arquivos temporários, usando _malloc_dbg para alocar memória. |
Rotinas de runtime C que não estão disponíveis no formato de código-fonte
O depurador pode ser usado para executar em etapas o código-fonte da maioria das rotinas em runtime C durante o processo de depuração. No entanto, a Microsoft considera algumas tecnologias proprietárias e, portanto, não fornece o código-fonte para um subconjunto dessas rotinas. A maioria dessas rotinas pertence a grupos de tratamento de exceção ou de processamento de ponto flutuante, mas algumas outras também são incluídas. A tabela a seguir lista essas rotinas.
Embora o código-fonte esteja disponível para a maioria das rotinas andscanf
, eles fazem uma chamada interna para outra rotina para a qual o printf
código-fonte não é fornecido.
Rotinas que se comportam de maneira diferente em um build de depuração de um aplicativo
Algumas funções em tempo de execução C e alguns operadores do C++ se comportam de maneira diferente quando chamados por meio de um build de depuração de um aplicativo. (Você pode criar uma compilação de depuração de um aplicativo definindo o _DEBUG
sinalizador ou vinculando-se a uma versão de depuração da biblioteca de tempo de execução C.) As diferenças comportamentais geralmente consistem em recursos extras ou informações fornecidas pela rotina para dar suporte ao processo de depuração. A tabela a seguir lista essas rotinas.
Rotina abort
do C
Rotina assert
do C
Operador delete
do C++
Operador new
do C++
Confira também
Rotinas de runtime C universais por categoria
Verificação de erros de runtime