Controlando o alvo

Enquanto você está 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 parado.

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 está parado devido a uma ação de depuração de kernel anterior.

Quando o depurador inicia ou se conecta a um destino no 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 parar um destino em execução, poderá emitir um comando Break . Esse comando faz com que o depurador entre no 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 no momento ou estiverem em uma operação de espera, o aplicativo será interrompido somente depois que o controle retornar 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 fechar normalmente, o destino será interrompido no depurador. Essa ação interrompe o destino e dá todo o controle ao depurador. Uma mensagem é exibida 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 por vez, use os comandos Passar por dentro ou Passar por cima . Se ocorrer uma chamada de função, Step Into entrará na função e continuará percorrendo cada instrução. Passar por cima trata a chamada de função como uma única etapa. Quando o depurador está no Modo de Montagem, a depuração ocorre uma instrução de computador por vez. Quando o depurador está no Modo de Origem, a depuração ocorre uma linha de origem por vez.

  • Para concluir a função atual e parar quando ocorrer o retorno, use os comandos Sair ou Rastrear e Observar . O comando Sair continua até que a função atual termine. Rastrear e Inspecionar continua até que a função atual termine e também exibe um resumo das chamadas da função. No entanto, você deve emitir o comando Trace and Watch na primeira instrução da função em questão.

  • Se ocorrer uma exceção, você poderá usar os comandos Ir com Exceção Tratada e Ir com Exceção Não Tratada 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, em seguida, usar o comando Executar até o cursor , o programa será executado até encontrar a linha selecionada.

  • (Somente no modo de usuário) Para fechar o aplicativo de destino e reiniciá-lo desde o início, use o comando Reiniciar . Você pode usar esse comando somente com um processo criado pelo depurador. 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ê inicie a depuração de 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 no CDB, KD ou WinDbg. (A forma de texto dos comandos freqüentemente oferece 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 seguintes formulários.

Comando Comando WinDbg Teclas de atalho do 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 + QUEBRAR

A execução é interrompida e o depurador entra no destino.

.restart (reiniciar aplicativo de destino)

Depurar | Reiniciar

CTRL + SHIFT + F5

(Somente modo de usuário) Reinicia o aplicativo de destino.

g (Ir)

Depurar | Ir

F5

O Target é executado livremente.

gc (Ir do ponto de interrupção condicional)

Retoma a execução após um ponto de interrupção condicional.

gh (Ir com Exceção Manipulada)

Depurar | Exceção tratada Go

O mesmo que g (Go), exceto que a exceção atual é tratada como tratada.

gn (Ir com exceção não tratada)

Depurar | Exceção não tratada

O mesmo que g (Go), exceto que a exceção atual é tratada como não tratada.

gu (Subir)

Depurar | Sair

SHIFT + F11

O Target é executado até que a função atual seja concluída.

p (Etapa)

Depurar | Passar por cima

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.

pa (Passo para o endereço)

O destino é executado até atingir o endereço especificado. Todas as etapas dessa função são exibidas (mas as etapas das funções chamadas não).

pc (passo para a próxima chamada)

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.

pct (Etapa para a próxima chamada ou retorno)

O destino é executado até atingir uma instrução de chamada ou uma instrução de retorno.

ph (Etapa para a próxima instrução de ramificação)

O Target é executado até atingir qualquer tipo de instrução de ramificação, incluindo ramificações condicionais ou incondicionais, chamadas, retornos e chamadas do sistema.

pt (Passo para o próximo retorno)

O destino é executado até atingir uma instrução de retorno .

t (Traço)

Depurar | Entre em

F11

F8

O destino executa uma instrução. Se essa instrução for uma chamada de função, o depurador rastreará essa chamada.

ta (Rastrear para Endereço)

O destino é executado até atingir o endereço especificado. Todas as etapas nesta função e funções chamadas são exibidas.

tb (Rastrear para a próxima ramificação)

(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.

tc (Rastrear para a próxima chamada)

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 alcançada.

tct (Rastrear para a próxima chamada ou retorno)

O destino é executado até atingir uma instrução de chamada ou instrução de retorno. 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 alcançado.

th (Rastrear para a próxima instrução de ramificação)

O Target é executado até atingir qualquer tipo de instrução de ramificação, incluindo ramificações condicionais ou incondicionais, 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 alcançada.

tt (Rastrear para o próximo retorno)

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.

wt (Dados de rastreamento e observação)

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 Travando e reinicializando o computador de destino.

Opções de Linha de Comando

Se você não quiser que o aplicativo pare imediatamente quando 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.

O CDB e o WinDbg também dão suporte à opção de linha de comando -G. Essa opção faz 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 aparece somente 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 break for emitido e o depurador não puder entrar no destino após esse tempo, o depurador exibirá uma mensagem "Break-in timed out".

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.