Como debugar códigos em Python

Software developer or programmer working data debugging improvement binary algorithm on desktop pc i
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.

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.

Imagem

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

Share

Facebook
Twitter
LinkedIn

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Topics

Posts