EnglishFrançaisPortuguêsEspañol

Como debugar códigos em Python

Written by

 
Vinicius Mesel

Vinicius has experience in software development, recruiting, and finance. A tech workaholic, his goal is to help companies bringing their solutions to life

November 5, 2021

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

Have you liked our article?

Subscribe to our newslettter to keep receiving content like this on your email inbox