Você já pensou em como se faz para debugar códigos Python de uma maneira mais inteligente que o print?
Nesse artigo, inspirado no tweet que o @RochaCBruno fez, vamos mostrar um pouco mais sobre como usar outras técnicas de debugging que são mais interessantes e mais inteligentes para você conseguir resolver seus problemas rapidamente.
Bora?
Python Interativo
Todo mundo sabe que o Python tem o interpretador e nele você pode rodar os seus códigos e ter o resultado na hora, mas o que grande parte das pessoas não sabe é da existência e do uso da flag -i (ela significa interativo) e ela serve para poder rodar códigos e depois de sua execução, você entrar no interpretador com as variáveis e cálculos já feitos.
Então, por exemplo, se você tem um código:
# Esse arquivo se chama a.py a = 2 b = 1 print(a + b)
E você rodar este arquivo com a flag -i, você poderá entrar no interpretador e mexer nas variáveis dentro do mesmo runtime que seu código, permitindo que você entenda melhor os outputs de seu código

Utilizando um debugger de verdade: PDB (famoso pode dar bão)
O Python possui um debugger built-in chamado PDB, nele, você pode definir linhas em que você quer entrar e parar a execução de seu código (o famoso breakpoint).
No caso abaixo que o Bruno fez, ele rodou o script com a flag M, de módulo, que permite com que carreguemos um novo módulo no código e com o comando (flag C) que permite com que o PDB rode até a linha 5 sem nenhuma interrupção.
Se você quiser usar um breakpoint igual em outras linguagens, o PDB oferece isso. Quando estiver usando o Python anterior a versão 3.7, você deve acionar o breakpoint com: __import__("pdb").set_trace()
; Já em versões mais recentes, apenas o comando breakpoint()
nativo do Python já funcionará
O IPython também tem sua versão (que eu, particularmente, gosto mais) chamada IPDB que segue os mesmos comandos do PDB, mas com uma interface mais bonita e colorida.
Outros debuggers
Existem outros debuggers também que você pode usar:
- SDB – https://github.com/ryanpetrello/sdb – Debugger baseado em Sockets
- Web-pdb – PDB remoto com interface web