Controlando o destino
Enquanto você estiver depurando um aplicativo de destino no modo de usuário ou um computador de destino no modo kernel, o destino pode estar em execução ou interrompido.
Quando o depurador se conecta a um destino no modo kernel, o depurador deixa o destino em execução, a menos que você use a opção de linha de comando-b, o sistema de destino parou de responder (ou seja, falhou) ou o sistema de destino ainda será interrompido devido a uma ação de depuração de kernel anterior.
Quando o depurador é iniciado ou se conecta a um destino de modo de usuário, o depurador interrompe imediatamente o destino, a menos que você use a opção de linha de comando -g . Para obter mais informações, consulte Ponto de interrupção inicial.
Quando o destino está em execução
Quando o destino está em execução, a maioria das ações do depurador não está disponível.
Se você quiser interromper um destino em execução, poderá emitir um comando Break . Esse comando faz com que o depurador interrompa o destino. Ou seja, o depurador interrompe o destino e todo o controle é dado ao depurador. O aplicativo pode não ser interrompido imediatamente. Por exemplo, se todos os threads estiverem executando o código do sistema ou estiverem em uma operação de espera, o aplicativo será interrompido somente depois que o controle tiver retornado ao código do aplicativo.
Se um destino em execução encontrar uma exceção, se determinados eventos ocorrerem, se um ponto de interrupção for atingido ou se o aplicativo for fechado normalmente, o destino será dividido no depurador. Essa ação interrompe o destino e fornece todo o controle para o depurador. Uma mensagem aparece na janela Comando do Depurador e descreve o erro, o evento ou o ponto de interrupção.
Quando o destino é interrompido
Para iniciar ou controlar a execução do destino, você pode fazer o seguinte:
Para fazer com que o aplicativo comece a ser executado, emita o comando Go .
Para percorrer o aplicativo uma instrução de cada vez, use os comandos Intervir ou Intervir . Se ocorrer uma chamada de função, Step Into entrará na função e continuará percorrendo cada instrução. Step Over trata a chamada de função como uma única etapa. Quando o depurador está no Modo de Assembly, a etapa ocorre uma instrução de computador por vez. Quando o depurador está no Modo de Origem, a etapa ocorre uma linha de origem por vez.
Para concluir a função atual e parar quando o retorno ocorrer, use os comandos Sair ou Rastrear e Observar . O comando Sair continua até que a função atual termine. Rastreamento e Inspeção continuam até que a função atual termine e também exiba um resumo das chamadas da função. No entanto, você deve emitir o comando Rastreamento e Inspeção na primeira instrução da função em questão.
Se ocorrer uma exceção, você poderá usar os comandos Go with Exception Handled e Go with Exception Not Handled para retomar a execução e controlar o status da exceção. (Para obter mais informações sobre exceções, consulte Controlando exceções e eventos.)
(Somente WinDbg) Se você selecionar uma linha na janela Desmontagem ou em uma janela Origem e usar o comando Executar no Cursor , o programa será executado até encontrar a linha selecionada.
(Somente modo de usuário) Para fechar o aplicativo de destino e reiniciá-lo desde o início, use o comando Reiniciar . Você só pode usar esse comando com um processo que o depurador criou. Depois que o processo é reiniciado, ele entra imediatamente no depurador.
(Somente WinDbg) Para fechar o aplicativo de destino e limpar o depurador, use o comando Parar Depuração . Esse comando permite que você comece a depurar um destino diferente.
Formulários de Comando
A maioria dos comandos para iniciar ou controlar a execução do destino existe como comandos de texto, comandos de menu, botões da barra de ferramentas e teclas de atalho. Como comandos de texto básicos, você pode usar esses comandos em CDB, KD ou WinDbg. (A forma de texto dos comandos frequentemente dá suporte a opções adicionais, como alterar o local do contador do programa ou executar um número fixo de instruções.) Você pode usar os comandos de menu, os botões da barra de ferramentas e as teclas de atalho no WinDbg.
Você pode usar os comandos nos formulários a seguir.
Comando | Comando WinDbg | Teclas de atalho WinDbg | Efeito |
---|---|---|---|
Depurar | Executar para o Cursor |
F7 CTRL + F10 |
(Somente WinDbg) Executa até atingir a linha que o cursor marca. |
|
Depurar | Parar Depuração |
SHIFT + F5 |
Interrompe toda a depuração e fecha o destino. |
|
(Somente CDB/KD) CTRL+C |
Depurar | Quebrar |
CTRL + QUEBRA |
A execução é interrompida e o depurador é dividido no destino. |
Depurar | Reiniciar |
CTRL + SHIFT + F5 |
(Somente modo de usuário) Reinicia o aplicativo de destino. |
|
Depurar | Ir |
F5 |
O destino é executado livremente. |
|
Retoma a execução após um ponto de interrupção condicional. |
|||
Depurar | Exceção tratada pelo Go |
O mesmo que g (Go), exceto que a exceção atual é tratada como tratada. |
||
Depurar | Ir sem tratamento exceção |
O mesmo que g (Go), exceto que a exceção atual é tratada como sem tratamento. |
||
Depurar | Sair |
SHIFT + F11 |
O destino é executado até que a função atual seja concluída. |
|
Depurar | Passo a passo |
F10 |
O destino executa uma instrução. Se essa instrução for uma chamada de função, essa função será executada como uma única etapa. |
|
O destino é executado até atingir o endereço especificado. Todas as etapas nessa função são exibidas (mas as etapas nas funções chamadas não são). |
|||
O destino é executado até a próxima instrução de chamada . Se a instrução atual for uma instrução de chamada , essa chamada será executada completamente e a execução continuará até a próxima chamada. |
|||
O destino é executado até atingir uma instrução de chamada ou uma instrução de retorno . |
|||
O destino é executado até atingir qualquer tipo de instrução de ramificação, incluindo branches condicionais ou incondicional, chamadas, retornos e chamadas do sistema. |
|||
O destino é executado até atingir uma instrução de retorno . |
|||
Depurar | Intervir |
F11 F8 |
O destino executa uma instrução. Se essa instrução for uma chamada de função, o depurador rastreará essa chamada. |
|
O destino é executado até atingir o endereço especificado. Todas as etapas nessa função e chamadas funções são exibidas. |
|||
(Todos os modos, exceto o modo kernel, somente em sistemas baseados em x86) O destino é executado até atingir a próxima instrução de ramificação. |
|||
O destino é executado até a próxima instrução de chamada . Se a instrução atual for uma instrução de chamada , a instrução será rastreada até que uma nova chamada seja atingida. |
|||
O destino é executado até atingir uma instrução de chamada ou retornar instruções. Se a instrução atual for uma instrução de chamada ou instrução de retorno , a instrução será rastreada até que uma nova chamada ou retorno seja atingido. |
|||
O destino é executado até atingir qualquer tipo de instrução de ramificação, incluindo branches condicionais ou incondicional, chamadas, retornos e chamadas do sistema. Se a instrução atual for uma instrução de ramificação, a instrução será rastreada até que uma nova instrução de ramificação seja atingida. |
|||
O destino é executado até atingir uma instrução de retorno . Se a instrução atual for uma instrução de retorno , a instrução será rastreada até que um novo retorno seja alcançado. |
|||
O destino é executado até a conclusão de toda a função especificada. As estatísticas são exibidas. |
Para obter mais informações sobre como reiniciar o computador de destino, consulte Falha e reinicialização do computador de destino.
Opções de Linha de Comando
Se você não quiser que o aplicativo pare imediatamente quando ele for iniciado ou carregado, use CDB ou WinDbg junto com a opção de linha de comando -g . Para obter mais informações sobre essa situação, consulte Ponto de interrupção inicial.
CDB e WinDbg também dão suporte à opção de linha de comando-G. Essa opção fará com que a sessão de depuração termine se o aplicativo for concluído corretamente.
O comando a seguir tenta executar o aplicativo do início ao fim e o prompt do depurador só aparece se ocorrer um erro.
cdb -g -G ApplicationName
Você pode usar a opção de linha de comando-pt para definir o tempo limite de interrupção. Há certos problemas que podem tornar o destino incapaz de se comunicar com o depurador. Se um comando de interrupção for emitido e o depurador não puder invadir o destino após esse momento, o depurador exibirá uma mensagem "Tempo limite de interrupção".
Neste ponto, o depurador para de tentar invadir o destino. Em vez disso, o depurador pausa o destino e permite que você examine (mas não controle) o aplicativo de destino.
O tempo limite padrão é de 30 segundos.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de