Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Python Debugger:Melhore sem esforço suas habilidades de depuração


Depurar código Python, para muitos de nós, se resume a adicionar instruções de impressão e tentar raciocinar o que está acontecendo com base na saída. Não é o ideal, mas por algum motivo, as pessoas simplesmente não querem tocar no depurador Python.

Índice

Usando print para depurar código


Se você é uma daquelas pessoas que usam print para depuração, não estou julgando você . Aprender Python é difícil. Programar é difícil. A vida é difícil. Eu entendo que aprender mais uma coisa parece cansativo se você já está lutando. E adicionar essa instrução de impressão ao seu código… é apenas mais fácil. Uma pequena confissão:eu ainda faço isso o tempo todo também. Não é tão ruim quanto alguns fazem parecer.

Dito isso, vou te ensinar um pequeno truque que será tão fácil quanto adicionar instruções de impressão ao seu código. No entanto, esse truque oferece infinitos poderes de depuração e permitirá que você conquiste o mundo, caso precise.

Definindo um ponto de interrupção do depurador Python


Você não precisa de um IDE para depurar seu código corretamente. Esse truque sempre funciona, mesmo no editor mais simples e até mesmo em Jupyter Notebooks.

O truque se resume a isso:definir um chamado ponto de interrupção usando a instrução breakpoint() . Você pode inseri-lo em seu código, não importa qual editor ou IDE você esteja usando, no ponto em que você normalmente colocaria essa instrução de impressão irritante.

Então, o que acontece quando você faz isso? Vamos descobrir! Crie um programa simples, como o abaixo:
def add_two(x):
    return x + 2
for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

Quando você executa isso, e não importa se você faz isso no REPL, na linha de comando ou em seu IDE, você cai no depurador Python chamado PDB. Mas e agora?

Usando o depurador Python


Quando eu inicio o pequeno programa acima, isso é o que acontece:
$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb)_

Há algumas coisas para ver aqui:

O depurador Python é, na verdade, um shell Python totalmente funcional, assim como o REPL.

Neste ponto, podemos inspecionar o ambiente atual. Vamos ver qual é o valor de a é agora:
(Pdb) print(a)
3
(Pdb) print(i)
1

Em vez de imprimir, você também pode usar o comando específico pdb p, assim:
(Pdb) p a
3
(Pdb_ p i
1

Executando a próxima linha


E daí se quisermos executar a próxima linha de código? Existem duas opções:

Para deixar isso mais claro:step felizmente entra em uma chamada de função e quebra dentro dessa função. Por outro lado, next executa a função até que ela retorne e quebra na próxima linha.

Outros depuradores e IDEs também chamam isso de 'step into' (em vez de step) e 'step over' (em vez de next).

Agora vamos usar esses dois:
$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

Como você pode ver, primeiro passamos pela chamada para add_two com n . Na segunda vez, entramos na função com s .

Comandos do depurador Python


Existem mais comandos que você pode tentar por conta própria. Não vou listar todos, apenas os mais úteis:

Para obter a documentação completa, vá para a página do depurador Python, onde todos os comandos estão listados.

Continue aprendendo


Embora isso possa ser super útil, vale a pena mergulhar no depurador que seu IDE oferece. Se você é um usuário do VSCode, escrevi um tutorial sobre como depurar código Python no VSCode.

python

  1. Entrada, Saída e Importação do Python
  2. Instrução Python Print():Como imprimir com exemplos
  3. Strings Python:Substituir, Unir, Dividir, Reverter, Maiúsculas e Minúsculas
  4. Python time.sleep():adicionar atraso ao seu código (exemplo)
  5. Python New Line:Como imprimir SEM Newline em Python
  6. Frotas conectadas melhoram seus resultados
  7. Como os protótipos melhoram seu processo de fabricação
  8. 5 maneiras de melhorar suas peças de chapa metálica
  9. 3 dicas para melhorar seu plano de manutenção de equipamentos
  10. Dicas e considerações:aprenda a melhorar suas habilidades de design de PCB