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.
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. |
Depurar | Recomeçar |
CTRL + SHIFT + F5 |
(Apenas no modo de utilizador) Reinicia o aplicativo de destino. |
|
Depurar | Ir |
F5 |
O alvo opera 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 é considerada como resolvida. |
||
Depurar | Exceção não tratada |
O mesmo que g (Go), exceto que a exceção atual é tratada como não tratada. |
||
Depurar | Saia |
SHIFT + F11 |
O alvo é executado até que a função atual seja concluída. |
|
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. |
|
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. |
|||
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. |
|||
O destino é executado até atingir uma chamada instrução ou uma retornar instruçã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. |
|||
O alvo é executado até atingir uma instrução de retorno . |
|||
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. |
|
O alvo é executado até alcançar o endereço especificado. Todas as etapas nesta função e funções chamadas são exibidas. |
|||
(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. |
|||
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. |
|||
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. |
|||
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. |
|||
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. |
|||
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.