Partilhar via


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 ser executando ou interrompido.

Quando o depurador se conecta a um alvo em modo kernel, o depurador mantém o alvo em execução, a menos que o utilizador utilize a opção de linha de comando -b, o sistema alvo tenha deixado de responder (ou seja, falhou), ou o sistema alvo ainda esteja parado devido a uma ação de depuração do kernel anterior.

Quando o depurador inicia ou se conecta a um destino de modo de usuário, o depurador para 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 quiser parar um destino em execução, você pode emitir um comando Break. Esse comando faz com que o depurador invada ode destino. Ou seja, o depurador para o programa alvo e todo o controlo é transferido para o depurador. O aplicativo pode não quebrar imediatamente. Por exemplo, se todos os threads estiverem atualmente executando o código do sistema 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 de ponto de interrupção for atingido ou se o aplicativo fechar normalmente, o de destino entrará no depurador. Esta ação interrompe o alvo e dá todo o controlo ao depurador. Uma mensagem aparece na janela Comando do Depurador e descreve o erro, evento ou ponto de interrupção.

Quando o alvo é parado

Para iniciar ou controlar a execução do alvo, pode fazer o seguinte:

  • Para fazer com que o aplicativo comece a ser executado, execute o comando Go.

  • Para percorrer o aplicativo uma instrução de cada vez, use os comandos Step Into ou Step Over. Se ocorrer uma chamada de função, Step Into entra na função e continua a executar instrução por instrução. Step Over trata a chamada de função como uma única etapa. Quando o depurador está no Modo de Montagem , a execução passo a passo ocorre uma instrução de máquina de cada vez. Quando o depurador está no Modo Fonte , a execução ocorre uma linha de origem de cada vez.

  • Para concluir a função atual e parar quando o retorno ocorrer, use os comandos Step Out ou Trace and Watch. O comando "Step Out" permanece ativo até que a função atual termine. Rastrear e Observar continua até que a função atual termine e exibe também 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ê pode 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 Controlling Exceptions and Events.)

  • (Apenas WinDBG) Se tu selecionares uma linha na janela de Desmontagem ou numa janela de Origem e, em seguida, usares o comando Executar até ao 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 Restart. Você pode usar este comando somente com um processo que o depurador criou. Depois que o processo é reiniciado, ele imediatamente invade o depurador.

  • (Apenas WinDBG) Para fechar o aplicativo de destino e limpar o depurador, use o comando Stop Debugging. Este comando permite que inicie a depuração de um alvo 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 suporta 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, botões da barra de ferramentas e teclas de atalho no WinDbg.

Você pode usar os comandos nos seguintes formulários.

Comando Comando WinDbg Teclas de atalho WinDbg Efeito

Depurar | Executar até ao cursor

F7

CTRL + F10

(Apenas WinDBG) Executa até atingir a linha marcada pelo cursor.

Depurar | Parar de Depurar

SHIFT + F5

Interrompe toda a depuração e fecha o destino.

(Apenas CDB/KD) CTRL+C

Depurar | Intervalo

CTRL + PAUSA

A execução para e o depurador interrompe o programa alvo.

.restart (Reiniciar Aplicativo de Destino)

Depurar | Recomeçar

CTRL + SHIFT + F5

(Apenas no modo de utilizador) Reinicia o aplicativo de destino.

g (Go)

Depurar | Ir

F5

O alvo opera livremente.

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

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

ir (Com Exceção tratada)

Depurar | Exceção tratada pelo Go

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

gn (Ir com a 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 (Suba)

Depurar | Saia

SHIFT + F11

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

p (Passo)

Depurar | Passo por cima

F10

O Target executa uma instrução. Se esta instrução for uma chamada de função, essa função será executada como uma única etapa.

pa (Passo para Endereçar)

O alvo executa até atingir o endereço especificado. Todas as etapas nesta função são exibidas, mas não as etapas em funções chamadas.

pc (Passo para a Próxima Chamada)

A execução continua até à próxima instrução de chamada . Se a instrução atual for uma chamada instrução, essa chamada será executada completamente e a execução continuará até a próxima chamada.

pct (Passo para a Próxima Chamada ou Retorno)

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

ph (Passo para a Próxima Instrução de Ramificação)

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

pt (Passo para o Próximo Retorno)

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

t (Traço)

Depurar | Entrar em

F11

F8

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

ta (Rastrear para endereço)

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

tb (Traçar para o Próximo Ramo)

(Todos os modos, exceto o modo kernel, apenas em sistemas baseados em x86) O destino é executado até atingir a próxima instrução de ramificação.

tc (Rastrear para próxima chamada)

Target executa até à 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 instrução de chamada seja alcançada.

tct (Rastrear para próxima chamada ou retorno)

Target é executado até atingir a instrução de chamada ou a instrução de retorno . Se a instrução atual for uma instrução de chamada ou uma instrução de retorno , a instrução será rastreada até que uma nova instrução de chamada ou de retorno seja alcançada.

th (Traçar para a Próxima Instrução de Ramificação)

O alvo é executado até atingir qualquer tipo de instrução de ramificação, incluindo ramificações condicionais ou incondicionais, chamadas, retornos e chamadas ao sistema. Se a instrução atual for uma instrução de ramificação, ela será seguida até que uma nova instrução de ramificação seja alcançada.

tt (Rastrear para o próximo retorno)

Target é 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 alvo é executado até à conclusão da função especificada na totalidade. As estatísticas são entã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 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 suportam a opção de linha de comando -G. Essa opção faz com que a sessão de depuração termine se o aplicativo terminar 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 interromper o alvo após esse tempo, o depurador exibirá a mensagem "Break-in timed out".

Neste ponto, o depurador para de tentar invadir o alvo. Em vez disso, o depurador pausa a aplicação alvo e permite que o utilizador a examine (mas não controle).

O tempo limite padrão é de 30 segundos.