Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para obter uma visão geral dos fluxos de entrada e saída no mecanismo do depurador, consulte Entrada e saída.
Entrada
O mecanismo solicitará a entrada de todos os seus clientes se o método Input for chamado em um cliente. A entrada é devolvida ao chamador de Input.
Retornos de chamada de entrada
Quando o mecanismo solicita a entrada de um cliente, ele usa o objeto IDebugInputCallbacks registrado com esse cliente. Um IDebugInputCallbacks objeto pode ser registrado com um cliente usando SetInputCallbacks. Cada cliente pode ter no máximo um objeto IDebugInputCallbacks registrado com ele.
A solicitação de entrada começa com o mecanismo chamando o método IDebugInputCallbacks::StartInput . Isso informa ao objeto IDebugInputCallbacks que o mecanismo agora está aguardando entrada.
Se o objeto IDebugInputCallbacks tiver alguma entrada para o mecanismo, ele poderá chamar o método ReturnInput de qualquer cliente. Uma vez que o método ReturnInput tenha sido chamado, o mecanismo não receberá mais nenhuma entrada. Utilizadores subsequentes deste método serão informados de que a entrada não foi recebida.
O mecanismo chamará IDebugInputCallbacks::EndInput para indicar que parou de aguardar entrada.
Finalmente, o mecanismo ecoará essa entrada para o objeto IDebugOutputCallbacks registrado de cada cliente (exceto o usado para fornecer a entrada) usando IDebugOutputCallbacks::Output com a máscara de bits definida como DEBUG_OUTPUT_PROMPT.
Saída
A saída pode ser enviada para o mecanismo usando vários métodos de cliente -- por exemplo, Output e OutputVaList. Ao receber a saída, o motor envia-a para alguns clientes.
Os clientes usam uma máscara de saída para indicar em quais tipos de saída estão interessados. Sempre que o motor produz uma saída, esta vem acompanhada de uma máscara especificando o seu tipo de saída. Se o tipo de saída corresponder à máscara de saída do cliente, o cliente receberá a saída. A máscara de saída pode ser definida chamando SetOutputMask e consultada usando GetOutputMask. Consulte DEBUG_OUTPUT_XXX para obter detalhes dos valores da máscara de saída.
A lista de clientes para os quais o mecanismo enviará saída é controlada pelo controle de saída. Normalmente, o controle de saída é definido para enviar saída para todos os clientes; no entanto, ele pode ser alterado temporariamente usando ControlledOutput e ControlledOutputVaList. Consulte DEBUG_OUTCTL_XXX para obter detalhes sobre os valores de controle de saída.
A saída pode ser armazenada em buffer pelo motor. Se várias peças de saída são passadas para o motor, ele pode coletá-las e enviá-las para os clientes em uma peça grande. Para liberar esse buffer, use FlushCallbacks.
Cada objeto cliente tem uma largura de saída, que é a largura da exibição de saída para o objeto cliente. Embora essa largura seja usada apenas como uma dica, alguns comandos e funções de extensão formatam sua saída com base nessa largura. A largura é retornada pelo método GetOutputWidth e pode ser definida usando o método SetOutputWidth.
Retornos de chamada de saída
Quando o mecanismo envia saída para um cliente, ele usa o objeto IDebugOutputCallbacks registrado com o cliente. Um objeto IDebugOutputCallbacks pode ser registrado com um cliente usando SetOutputCallbacks. Cada cliente pode ter no máximo um objeto IDebugInputCallbacks registrado com ele.
Para enviar a saída, o mecanismo chama o método IDebugOutputCallbacks::Output .
Prefixo da linha de saída
Cada objeto de cliente tem um prefixo de linha de saída que é anexado a cada linha de saída enviada para o retorno de chamada de saída associado ao objeto cliente. Isto pode ser usado para indentação ou para colocar marcas identificativas em cada linha de saída.
O prefixo da linha de saída é retornado por GetOutputLinePrefix e pode ser definido usando SetOutputLinePrefix. Para alterar temporariamente o prefixo da linha de saída e depois alterá-lo novamente, use PushOutputLinePrefix e PopOutputLinePrefix.
Ficheiros de registo
O mecanismo do depurador suporta a abertura de um arquivo de log para gravar uma sessão de depuração. No máximo, um arquivo de log pode ser aberto de cada vez. A saída enviada para os retornos de chamada de saída também é enviada para esse arquivo de log (a menos que seja sinalizada para não ser registrada).
Para abrir um arquivo de log, use OpenLogFile2 (ou OpenLogFile). O método GetLogFile2 (ou GetLogFile) retorna o arquivo de log aberto no momento. Para fechar o arquivo de log, use CloseLogFile.
O método SetLogMask pode ser usado para filtrar a saída enviada para o arquivo de log, e GetLogMask retornará o filtro de arquivo de log atual.
Mensagem
Em uma sessão de depuração interativa, um prompt pode ser usado para indicar ao usuário que o depurador está aguardando a entrada do usuário. O prompt é enviado para os retornos de chamada de saída usando os métodos OutputPrompt e OutputPromptVaList . O conteúdo do prompt padrão é retornado por GetPromptText.