Etapa 4: Executar o código no depurador
Etapa anterior: usar a janela interativa REPL
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. No depurador, você pode executar seu código passo a passo, incluindo cada iteração de um loop. Você também pode pausar o programa sempre que determinadas condições são verdadeiras. A qualquer momento em que o programa estiver em pausa no depurador, você poderá examinar todo o estado do programa e alterar o valor de variáveis. Essas ações são essenciais para a localização de bugs do programa e também fornecem recursos úteis para seguir o fluxo exato do programa.
Substitua o código no arquivo PythonApplication1.py pelo código a seguir. Essa variação do código expande o
make_dot_string
para que você possa examinar as etapas distintas no depurador. Ela também coloca o loopfor
em uma funçãomain
e executa-o explicitamente, chamando essa função: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()
Verifique se o código funciona corretamente pressionando F5 ou selecionando o comando de menu Depurar>Iniciar Depuração. Esse comando executa o código no depurador. Até agora, nada foi feito para pausar o programa enquanto ele está em execução; ele apenas imprimirá um padrão de onda para algumas iterações. Pressione qualquer tecla para fechar a janela de saída.
Dica
Para fechar a Janela de Saída automaticamente quando o programa for concluído, selecione o comando de menu Ferramentas>Opções, expanda o nó do Python, selecione Depuração e, em seguida, desmarque a opção Aguardar pela entrada quando o processo for encerrado normalmente:
Para obter mais informações sobre depuração e como definir argumentos de script e interpretador, confira Depurar seu código Python.
Defina um ponto de interrupção na instrução
for
clicando uma vez na margem cinza próxima a essa linha ou colocando o cursor na linha e usando o comando Depurar>Ativar/Desativar Ponto de Interrupção (F9). Um ponto vermelho é exibido na margem cinza para indicar o ponto de interrupção (conforme indicado pela seta abaixo):Inicie o depurador novamente (F5) e veja que a execução do código é interrompida na linha com o ponto de interrupção. Aqui você pode inspecionar a pilha de chamadas e examinar variáveis. As variáveis que estão no escopo aparecem na janela Autos quando elas estão definidas. Você também pode alternar para a exibição Locais na parte inferior dessa janela para mostrar todas as variáveis que o Visual Studio localiza no escopo atual (incluindo funções), antes mesmo que elas sejam definidas:
Observe a barra de ferramentas de depuração (mostrada abaixo) na parte superior da janela do Visual Studio. Essa barra de ferramentas fornece acesso rápido aos comandos de depuração mais comuns (que também podem ser encontrados no menu Depurar):
Os botões, da esquerda para a direita, são os seguintes:
Botão Comando Continuar (F5) Executa o programa, até o próximo ponto de interrupção ou até a conclusão do programa. Interromper Tudo (Ctrl+Alt+Break) Pausa um programa de longa execução. Parar Depuração (Shift+F5) Interrompe o programa onde quer que esteja e sai do depurador. Reiniciar (Ctrl+Shift+F5) Interrompe o programa no ponto em que está e o reinicia no depurador. Mostrar Próxima Instrução (Alt+Num*) Alterna para a próxima linha de código a ser executada. Isso é útil quando você navega em seu código durante uma sessão de depuração e deseja retornar rapidamente ao ponto em que o depurador está em pausa. Entrar em (F11) Executa a próxima linha de código, entrando em funções chamadas. Passo a passo (F10) Executa a próxima linha de código sem entrar em funções chamadas. Sair (Shift+F11) Executa o restante da função atual e pausa no código de chamada. Contorne a instrução
for
usando Contornar. Passo a passo significa que o depurador executa a linha de código atual, incluindo todas as chamadas de função e, em seguida, imediatamente entra em pausa outra vez. Observe, no código, como a variáveli
agora está definida nas janelas Locais e Autos.Contorne a próxima linha de código, que chama
make_dot_string
e entra em pausa. Aqui o Contorno significa especificamente que o depurador executa todo omake_dot_string
e entra em pausa ao retornar. O depurador não é interrompido dentro dessa função, a menos que exista nela outro ponto de interrupção.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 das variáveis
i
ous
para editar o valor. Pressione Enter ou selecione uma área fora desse valor para aplicar alterações, se houver.Continuar percorrendo o código passo a passo, usando Intervir. Intervir significa que o depurador entra dentro de qualquer chamada de função para a qual ele tenha informações de depuração, como
make_dot_string
. Uma vez dentro domake_dot_string
, você pode examinar as variáveis locais e percorrer o código especificamente.Continue depurando passo a passo com Intervir e observe que, ao chegar ao fim do
make_dot_string
, a próxima etapa retorna para o loopfor
com o novo valor retornado na variávels
. Conforme você avança novamente para a instruçãoprint
, observe que o Intervir emprint
não entra nessa função. Isso ocorre porqueprint
não está escrita em Python, mas é código nativo dentro do runtime do Python.Continue usando Intervir até que você esteja novamente quase em
make_dot_string
. Então, use Sair e observe que você retornará ao loopfor
. Com Sair, o depurador executa o restante da função e faz automaticamente uma pausa no código de chamada. Isso é útil quando você percorre alguma parte de uma função longa que deseja depurar. Ele percorrerá o restante e não definirá um ponto de interrupção explícito no código de chamada.Para continuar a execução do programa até que o próximo ponto de interrupção seja atingido, use Continuar (F5). Como há um ponto de interrupção no loop
for
, você interrompe na próxima iteração.Percorrer centenas de iterações de um loop pode ser entediante, portanto, o Visual Studio permite que você adicione uma condição a um ponto de interrupção. Assim, o depurador só pausa o programa no ponto de interrupção quando a condição é satisfeita. Por exemplo, você pode usar uma condição com o ponto de interrupção na instrução
for
para que ele faça uma pausa somente quando o valor dei
exceder 1600. Para definir a condição, clique com o botão direito do mouse no ponto de interrupção e selecione Condições (Alt+F9>C). Na janela pop-up Configurações de Ponto de Interrupção exibida, insirai > 1600
como a expressão e selecione Fechar. Pressione F5 para continuar e observe que o programa executa muitas iterações antes da próxima interrupção.Para executar o programa até a conclusão, desabilite o ponto de interrupção clicando com o botão direito do mouse no ponto na margem e selecionando Desabilitar ponto de interrupção (Ctrl+F9). Em seguida, selecione Continuar (ou pressione F5) para executar o programa. Quando o programa for finalizado, o Visual Studio interromperá a sessão de depuração e retornará para o modo de edição. Você também pode excluir o ponto de interrupção selecionando seu ponto ou clicando com o botão direito do mouse no ponto e selecionando Excluir ponto de interrupção. Ele também exclui qualquer condição que você tenha definido anteriormente.
Dica
Em algumas situações, como uma falha ao iniciar o interpretador do Python em si, a janela de saída poderá aparecer apenas rapidamente e fechar-se automaticamente, sem dar uma oportunidade de ver as mensagens de erros. Se isso acontecer, clique com botão direito do mouse no projeto no Gerenciador de Soluções, selecione Propriedades, selecione a guia Depurar e adicione -i
ao campo Argumentos do Interpretador. Esse argumento faz com que o interpretador entre no modo interativo após a conclusão de um programa, mantendo a janela aberta até que você pressione Ctrl+Z>Enter para sair.
Próxima etapa
Aprofunde-se um pouco mais
- Depuração
- Depuração no Visual Studio oferece uma documentação completa sobre os recursos de depuração do Visual Studio.