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