Tutorial: Executar código no Depurador no Visual Studio
Este artigo apresenta a Etapa 4 da série de tutoriais Trabalhar com Python no Visual Studio.
O Visual Studio fornece recursos para gerenciar projetos, uma experiência de edição avançada, a Janela Interativa e a depuração completa para código Python. Na Etapa 4 desta série de tutoriais, você usa o Depurador para executar o código passo a passo, incluindo cada iteração de um loop. No Depurador, você pode pausar o programa sempre que determinadas condições forem verdadeiras. A qualquer momento em que o programa for pausado, você poderá examinar todo o estado do programa e alterar o valor das variáveis. Essas ações são essenciais para rastrear bugs do programa e também fornecem auxílios úteis para seguir o fluxo exato do programa.
Na Etapa 4 do tutorial, você aprenderá a:
- Executar o código Python no Depurador no Visual Studio
- Definir pontos de interrupção e condições
- Examinar o estado do programa e alterar variáveis
- Explorar as janelas e ações do Depurador
Pré-requisitos
- Um projeto de aplicativo do Python que tem um arquivo Python (.py) com o código criado na Etapa 2: gravar e executar o código Python e Etapa 3: usar a janela interativa REPL deste tutorial.
Preparar o arquivo Python
Para se preparar para o exercício de depuração, siga estas etapas para atualizar o arquivo de projeto do Python para incluir um código mais robusto:
Abra o arquivo de projeto do Python (.py) no editor.
Substitua o código no arquivo pelo código a seguir. Esta versão do código expande a função
make_dot_string
para que você possa examinar suas etapas discretas no depurador. Ele move o loopfor
para uma funçãomain
e executa-o explicitamente chamando a funçãomain
:from math import cos, radians # Create a string with spaces proportional to a cosine of x in degrees def make_dot_string(x): rad = radians(x) # cos works with radians numspaces = int(20 * cos(rad) + 20) # Scale to 0-40 spaces st = ' ' * numspaces + 'o' # Place 'o' after the spaces return st def main(): for i in range(0, 1800, 12): s = make_dot_string(i) print(s) main()
Iniciar a depuração
Agora você está pronto para começar a verificar o código Python atualizado no Depurador.
Confirme se o código funciona corretamente selecionando Depurar>Iniciar depuração na barra de ferramentas ou use o atalho de teclado F5. Esses comandos executam o código no Depurador.
O do depurador de não detecta nenhum problema, portanto, o programa é executado com êxito. Uma janela de saída será aberta e você verá algumas iterações do padrão de onda cosseno. Selecione qualquer chave para fechar a janela de saída.
Dica
Para fechar a janela de saída automaticamente quando o programa for concluído, selecione Ferramentas>Opções, expanda a guia Python>Depuração e desmarque a opção Aguardar a entrada quando o processo sair normalmente.
Defina um ponto de interrupção na instrução de loop
for
usando um dos seguintes métodos:- Selecione na margem esquerda da linha de código.
- Clique com o botão direito do mouse na linha de código e selecione Ponto de Interrupção>Inserir Ponto de Interrupção.
- Coloque o cursor de inserção na linha do código e selecione Depurar>Alternar Ponto de Interrupção (ou use o atalho de teclado F9).
Os pontos de interrupção interrompem a execução do código em um ponto marcado para que você possa inspecionar o estado do programa. Um ponto vermelho é exibido em cada linha que tem um ponto de interrupção definido.
Inicie o Depurador novamente (F5). O código em execução do programa é interrompido na linha com o ponto de interrupção definido. Agora você pode inspecionar a pilha de chamadas e examinar variáveis para esse estado do código do programa em execução.
O Visual Studio fornece várias maneiras de observar o código do programa e os dados de execução, incluindo as seguintes janelas:
- A Pilha de chamadas mostra o histórico de chamadas de função e método pelo código do programa.
- As variáveis definidas que estão no escopo são exibidas na janela Autos.
- A exibição Locais mostra todas as variáveis que o Visual Studio encontra no escopo atual (incluindo funções), mesmo antes de serem definidas no código.
Para ver a lista completa de janelas e ações disponíveis, selecione Depurar>Windows.
Você pode abrir as janelas do Depurador para exibir o estado do programa quando um ponto de interrupção é atingido:
Usar ações do Depurador
Quando o Visual Studio interrompe a execução de código em um ponto de interrupção, há vários comandos que você pode usar para avançar pelo seu código ou executar blocos de código antes de parar novamente. Os comandos estão disponíveis em alguns locais no Visual Studio, incluindo a barra de ferramentas Depurador, o menu Depurar, o menu de contexto do editor de código ao clicar com o botão direito do mouse e por meio de atalhos de teclado.
A barra de ferramentas Depurador na parte superior da janela do Visual Studio fornece acesso rápido aos comandos de depuração mais comuns:
A tabela a seguir resume esses comandos conforme eles aparecem da esquerda para a direita na barra de ferramentas:
Ação | Atalho | Descrição |
---|---|---|
Continue | F5 | Execute o código até chegar ao próximo ponto de interrupção ou até a conclusão do programa. |
Interromper todos | Ctrl+Alt+Interrupção | Pausar um programa de longa duração. |
Parar Depuração | Shift+F5 | Pare o programa no ponto atual e saia do Depurador. |
Reinicialização | Ctrl+Shift+F5 | Pare o programa no ponto atual e reinicie o programa desde o início no Depurador. |
Mostrar Próxima Instrução | Alt+Num+\ | Retorne à próxima instrução a ser executada no código. Esse comando ajuda você a localizar o local no seu código em que o Depurador está parado. |
Intervir | F11 | Execute a próxima instrução e pare. Se a próxima instrução for uma chamada para uma função, o Depurador irá intervir na função e parar na primeira linha. |
Depuração Parcial | F10 | Execute a próxima instrução, incluindo fazer uma chamada a uma função (executando todo o código) e aplicar qualquer valor retornado. Esse comando permite ignorar facilmente as funções que você não precisa depurar. |
Depuração Circular | Shift+F11 | Execute o código até o final da função atual e, em seguida, vá para a instrução de chamada e pause. Esse comando é útil quando você não precisa depurar o restante da função atual. |
Siga estas etapas para trabalhar com as ações do Depurador no seu código Python:
Avance sobre a instrução de loop
for
usando a ação Passo a Passo.O Passo a Passo faz com que o Depurador execute a linha de código atual, inclusive qualquer função chamada, e pause imediatamente novamente. Depois do passo a passo, observe que a variável
i
agora está definida nas janelas Locais e Autos.Passo a Passo na próxima linha de código, que chama a função
make_dot_string
.Nesse caso, o Passo a Passo faz com que o Depurador execute a função de
make_dot_string
completa e pause após o retorno da função. O Depurador não para dentro da função, a menos que exista um ponto de interrupção separado lá.Continue depurando o código passo a passo mais algumas vezes e observe como os valores na janela Locais ou Autos se alteram.
Na janela Locais ou Autos, clique duas vezes na coluna Valor para que uma variável edite o valor. Neste exemplo, altere o valor da variável
s
para'Hello, Python Application'
. Certifique-se de colocar o valor entre aspas simples. Selecione Inserir ou qualquer área fora do valor para aplicar suas alterações.Continue o passo a passo do código usando Intervir até a chamada para a função
make_dot_string
.Para uma função, Intervir faz com que o Depurador chame a função e também entre no código da função. Quando o processo de depuração está dentro de uma função, você pode examinar suas variáveis locais e percorrer seu código especificamente. Neste exemplo, a ação Passo para passa para a função
make_dot_string
.Continue o passo a passo com Intervir até o retorno da função
make_dot_string
.Quando você chegar ao final do código da função
make_dot_string
, a próxima etapa retornará o *Depurador para o loopfor
com o novo valor de retorno na variávels
.À medida que você volta à instrução
print
, observe que a ação Intervir na instruçãoprint
não entra nessa função. Esse comportamento ocorre porque a funçãoprint
não é escrita em Python. É um código nativo dentro do runtime do Python.Continue usando Intervir até entrar novamente na função
make_dot_string
e, em seguida, use Sair e observe que o Depurador retornará ao loopfor
.Com Sair, o Depurador executa o restante da função e, em seguida, pausa automaticamente no código chamador. Essa ação é útil depois que você percorre alguma parte de uma função extensa e deseja encerrar sua observação da função. Sair passa pelo código restante ou até atingir um ponto de interrupção explícito definido no código de chamada.
Continue executando o programa até que o próximo ponto de interrupção seja atingido usando Continuar (F5). Como você tem um ponto de interrupção definido no loop
for
, você quebra na próxima iteração.Você pode confirmar que o programa está sendo executado ao observar o valor em constante mudança da variável
s
na janela Locais.
Usar condições de ponto de interrupção
Percorrer centenas de iterações de um loop pode ser entediante, portanto, o Visual Studio permite adicionar uma condição a um ponto de interrupção. Quando você define uma condição de ponto de interrupção, o Depurador pausa o programa no ponto de interrupção somente quando a condição é atendida.
As etapas a seguir mostram como definir uma condição de ponto de interrupção na instrução de loop for
para que o Depurador pausa somente quando o valor da variável i
exceder 1600:
Para definir a condição do ponto de interrupção, clique com o botão direito do mouse no ponto de interrupção vermelho e selecione Condições ou use o atalho de teclado Alt+F9>C.
Na caixa de diálogo pop-up Configurações do Ponto de Interrupção, defina as seguintes configurações para criar a Condição:
Defina o tipo de condição como expressão condicional.
Defina a avaliação da condição como É verdadeira.
Insira
i > 1600
como o valor da condição.Selecione Fechar.
Selecione F5 para continuar a depuração e a execução do programa. Observe que o programa executa muitas iterações antes de atingir o ponto de interrupção condicional.
Você pode confirmar se o Depurador pausa corretamente a execução do programa ao atingir o ponto de interrupção condicional. Quando a condição é atendida, a janela Locals mostra o valor da variável
i
como1608
.Para executar o programa até a conclusão, você pode desabilitar o ponto de interrupção e continuar a execução do programa.
Passe o mouse sobre o ponto vermelho e selecione Desabilitarou clique com o botão direito do mouse no ponto vermelho e selecione Desabilitar o ponto de interrupção.
Selecione Continuar (ou pressione F5) para executar o programa.
Quando o programa terminar, o Visual Studio interromperá a sessão de depuração e retornará ao modo de edição.
Você também pode excluir um ponto de interrupção. Selecione o ponto vermelho ou clique com o botão direito do mouse no ponto e selecione Excluir ponto de interrupção. Essa ação também exclui quaisquer condições definidas.
Dica
Em algumas situações, como uma falha ao iniciar o próprio interpretador do Python, a janela de saída do Python pode ser fechada imediatamente após a conclusão do programa sem pausar e mostrar o prompt Pressione qualquer tecla para continuar. Para forçar a pausa e o prompt, adicione o argumento -i
ao campo Executar>Argumentos do Interpretador na guia Depuração. Esse argumento coloca o interpretador do Python no modo interativo após a execução do código. O programa aguarda que você selecione Ctrl+Z+Enter para fechar a janela.