Rotinas de depuração
A versão de depuração da biblioteca de tempo de execução do c fornece vários serviços de diagnóstico que facilitam a depuração de programas e permitem que os desenvolvedores:
Etapa diretamente nas funções de tempo de execução durante a depuração
Resolver as asserções, erros e exceções
Rastrear as alocações de heap e impeça vazamentos de memória
Relatório de mensagens de depuração para o usuário.
Para usar essas rotinas, o _ Debug sinalizador deve ser definido.Todas essas rotinas não fazem nada em uma compilação de um aplicativo de varejo.Para obter mais informações sobre como usar as novas rotinas de depuração, consulte Técnicas de depuração CRT.
Versões de depuração das rotinas da biblioteca de tempo de execução c
Rotina |
Uso |
.Equivalente do NET Framework |
---|---|---|
Avaliar uma expressão e gera um relatório de depuração quando o resultado for falso |
||
Semelhante a _ASSERT, mas inclui a expressão com falha no relatório gerado |
||
Confirmar a integridade dos blocos de memória alocada na pilha de depuração |
||
Define um ponto de interrupção. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Gerar um relatório de depuração com uma mensagem de usuário e enviar o relatório para três destinos possíveis |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
Chamar uma função fornecida pelo aplicativo para todos os _CLIENT_BLOCK tipos no heap |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Todos os blocos de memória na pilha de depuração de despejo quando ocorre um vazamento de memória significativa |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Verifique se que um bloco de memória especificado está localizado na pilha local e se possui um identificador de tipo de bloco de heap de depuração válido |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Verifica se um ponteiro especificado está na pilha de local |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Verificar se um intervalo de memória especificado é válido para leitura e gravação |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Obter o estado atual da pilha de depuração e armazená-lo em um aplicativo-fornecido _CrtMemState estrutura |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Comparar dois estados de memória para diferenças significativas e retornar os resultados |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Informações sobre objetos na heap desde que foi feito a um ponto de verificação especificado ou desde o início da execução do programa de despejo. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Despejar as informações de cabeçalho de depuração para um estado de memória especificada em um formulário legível pelo usuário |
||
Retorna o tipo/subtipo do bloco associado com um ponteiro de bloco de heap de depuração determinado. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Para instalar uma função de alocação definida pelo cliente, conectá-lo no processo de alocação de memória de depuração de tempo de execução c |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Definir um ponto de interrupção em um número de pedido de alocação do objeto especificado |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Recuperar ou modificar o estado da _crtDbgFlag sinalizador para controlar o comportamento de alocação do Gerenciador de heap de depuração |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Instalar uma função definida pelo aplicativo que é chamada sempre que uma função de despejo de depuração é chamada para despejar _CLIENT_BLOCK digite blocos de memória |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Identificar o arquivo ou fluxo a ser usado como um destino para um tipo de relatório específico por_CrtDbgReport |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Para instalar uma função definida pelo cliente de relatório, conectá-lo para o processo de relatório de depuração de tempo de execução c |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Instala ou desinstala uma função definida pelo cliente de relatório por conectá-lo para o processo de relatório de depuração de tempo de execução C. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Especificar o destination(s) gerais para um tipo específico de relatório gerado pelo_CrtDbgReport |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Controlar o progresso do aplicativo gerando um relatório de depuração chamando _CrtDbgReport com uma seqüência de caracteres de formato e um número variável de argumentos.Não fornece nenhuma informação de chamadas número de arquivos e linha de origem. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Semelhante a _RPTn macros, mas fornece o número origem de linha e o nome do arquivo que originou a solicitação de relatório |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Alocar um número especificado de blocos de memória no heap com espaço adicional para um cabeçalho de depuração e buffers de substituição |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Para redimensionar um bloco de memória no heap especificado, expansão ou contração do bloco |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Liberar um bloco de memória no heap |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Criar um nome de caminho absoluto ou completo para o caminho relativo especificado nomear, usando _malloc_dbg ao alocar memória. |
||
Obter o diretório de trabalho atual, usando _malloc_dbg ao alocar memória. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Alocar um bloco de memória no heap com espaço adicional para um cabeçalho de depuração e buffers de substituição |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Calcular o tamanho de um bloco de memória no heap |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Realocar um bloco de memória no heap especificado por movendo e/ou redimensionar o bloco |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
|
Duplica uma seqüência de caracteres, usando _malloc_dbg ao alocar memória. |
||
Gerar nomes que você pode usar para criar arquivos temporários, usando _malloc_dbg ao alocar memória. |
Não aplicável.Para chamar a função c padrão, use PInvoke.Para obter mais informações, consulte Exemplos de invocação de plataforma. |
As rotinas de depuração podem ser usadas para percorrer o código-fonte para a maioria das outras rotinas tempo de execução c durante o processo de depuração.No entanto, a Microsoft considera a alguma tecnologia proprietários e, portanto, não fornece o código-fonte para essas rotinas.A maioria dessas rotinas pertence para a manipulação de exceção ou grupos de processamento de ponto flutuante, mas alguns outros também estão incluídos.A tabela a seguir lista essas rotinas.
Rotinas de tempo de execução c que não estão disponíveis na forma de código-fonte
printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l* |
||
scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l* |
||
|
* Embora o código fonte está disponível para a maioria dessa rotina, faz uma chamada interna para outra rotina para o qual o código-fonte não for fornecido.
Algumas funções de tempo de execução c e operadores de C++ ter comportamentos diferentes quando chamados a partir de uma compilação de depuração de um aplicativo.(Observe que uma compilação de depuração de um aplicativo pode ser feita com a definição de ambos os _DEBUG sinalizar ou por meio da vinculação com uma versão de depuração da biblioteca de tempo de execução C.) As diferenças de comportamento geralmente consistem em informações fornecidas pela rotina para suportar o processo de depuração ou de recursos extras.A tabela a seguir lista essas rotinas.
Criação de rotinas que se comportam de maneira diferente em uma depuração de um aplicativo
C anular rotina |
C++ Excluir operador |
C assert rotina |
C++ nova operador |
Para obter mais informações sobre como usar as versões de depuração dos operadores C++ na tabela anterior, consulte usando a pilha de depuração do C++.