Depure o Python como um herói com essas bibliotecas e ferramentas

Você quer ser um verdadeiro especialista em depuração Python? Depure seu código Python usando essas incríveis ferramentas e bibliotecas de depuração Python que abordaremos em breve!

Python é uma linguagem de programação de propósito geral, de alto nível e orientada a objetos usada para muitos propósitos de desenvolvimento. Além disso, é uma ferramenta de desenvolvimento eficaz para diferentes aplicativos, desde o desenvolvimento de aplicativos da Web até a raspagem da Web e aplicativos mais complexos, como aprendizado de máquina e ciência de dados.

Durante o desenvolvimento, erros chamados bugs na programação são propensos a ocorrer. Os desenvolvedores realizam várias etapas para detectar e eliminar os bugs existentes e potenciais do código. Como resultado, você evita que o código do programa seja esmagado. Chamamos esse processo de depuração.

Este artigo examinará vários depuradores Python disponíveis que você pode usar. Também veremos como esses depuradores são diferentes uns dos outros e o que torna sua implementação eficaz.

biblioteca de depuração cProfiler

cProfiler, é uma biblioteca popular e uma extensão C que executa a criação de perfil de código de longa duração. A longo prazo, identifica seções do código do programa que demoram muito para serem executadas. Embora identifique o tempo preciso necessário para executar diferentes seções do código, ele não identifica nem corrige totalmente os bugs no código.

Portanto, surge a necessidade de usar outros depuradores.

Felizmente, você pode usar bibliotecas recomendadas como ipdb, Django-debug-toolbar, pyelftools, viztracer e py-spy como ferramentas de depuração para seu código Python.

A ferramenta de depuração ipdb

O depurador Python habilitado para IPython na íntegra é um depurador de terceiros interativo que contém pdbfuncionalidade do. Ipbd também vem com suporte a IPython shell interativo. Esse suporte inclui preenchimento de guias, suporte a cores e funções mágicas, entre outros recursos de suporte.

  O que é um disco rígido EAMR e como ele funciona?

Este depurador permite o acesso ao depurador do IPython exportando funções relevantes. Ele também oferece uma interface semelhante para melhor introspecção, assim como no módulo pdb.

Depurando com Ipdb

A biblioteca requer instalação usando o comando pip abaixo.

pip install ipdb

Um exemplo de uso do ipdb ficaria assim:

import ipdb
alpha_list = ['a', 'b', 'c']
fruit_list = ['orange', 'mango', 'kiwi']

def nested_loop():
    for fruit_list:
        print (fruit)
        ipdb.set_trace()
    for x in alpha_list:
        print(x)
if __name__ == '__main__':
    nested_loop()

Execute o arquivo python usando o comando abaixo onde test.py é o nome do meu arquivo:

python -m ipdb test.py

A importação do ipdb e a execução da função ipdb.set_trace() permitem o início do programa e executam o depurador durante a execução.

A função ipdb.pm() (post-mortem) age de forma semelhante à função mágica %debug.

argumentos set_trace

Passe o contexto como um argumento para set_trace para mostrar várias linhas de código definidas. Além disso, cond, que set_trace também aceita como argumento, aceita valores booleanos e inicia a interface ipdb quando você define cond como true.

Usando o arquivo de configuração

Defina o argumento context com um arquivo idpdb ou o arquivo setup.cfg disponível na pasta inicial e na pasta do projeto, respectivamente. Você está convidado a verificar mais a funcionalidade do ipdb.

Barra de ferramentas de depuração do Django

o Barra de ferramentas de depuração do Django é uma ferramenta de depuração popular no Django: um framework Python.

Esse conjunto configurável de painéis exibe as informações de depuração de uma solicitação ou resposta atual. Ao clicar na barra de ferramentas, são exibidos mais detalhes sobre o conteúdo do painel.

Esta ferramenta inspeciona completamente o ambiente de desenvolvimento do Django.

Siga o processo de instalação e as instruções de configuração aqui.

Biblioteca Pyelftools

o pyelftools biblioteca é puramente construída em Python. Ele analisa e analisa arquivos ELF e informações de depuração DWARF e requer apenas que o Python seja executado.

Usar o Pyelftools é fácil, pois não possui bibliotecas externas. Além disso, usar o pyelftools sem instalação é muito fácil, pois simplesmente requer o ajuste de PYTHONPATH nas variáveis ​​de ambiente.

  Como obter a atualização Spring Creators

Você irá instalá-lo usando:

pip install pyelftools 

A implementação do pyelftools requer simplesmente importá-lo e invocá-lo em seu programa.

A ferramenta de depuração de sorvete 🍦

Esta é outra ferramenta de depuração eficiente para desenvolvedores Python.

Usando sorvetetambém ic(), vem com muitos benefícios sobre print(), conforme descrito abaixo:

  • Digitá-lo é relativamente mais rápido, literalmente.
  • Ele imprime estruturas de dados muito bem.
  • Imprima expressões ou nomes de variáveis ​​e seus valores com ic().
  • Ele destaca a sintaxe da saída.
  • Opcionalmente, inclui o contexto do programa, incluindo o nome do arquivo, o número da linha e a função pai.

Antes de usar este pacote, instale-o usando o comando pip abaixo:

pip install icecream

O bom é que você pode aproveitar ic() em todos os arquivos sem necessariamente importá-lo em todos os arquivos instalando-o usando install(). Além disso, install() adiciona ic() ao módulo interno. Todos os arquivos importados pelo interpretador compartilharão ic().

Em seu primeiro arquivo python raiz, que você pode nomear x.py, adicione ic() usando install().

from icecream import install
install()
from y import mult
mult()
 

Em y.py fil o arquivo x.py está importando, chame ic()

def mult():
    z=8
    ic(z)

Resultados:

y
ic| z : 8

O que torna o ic() mais eficiente é sua capacidade de inspecionar variáveis ​​passadas para ele, incluindo ele mesmo, e então imprimir seus argumentos e os valores dos argumentos como no exemplo a seguir.

from icecream import ic
def mult(x):
    return x * 4
ic(mult(100))

Resultado:

ic| mult(100): 400

Além disso, você pode inserir ic() em código pré-existente, pois ele retorna seus argumentos. O exemplo abaixo retorna ic| x: 12, então ic| e: 48.

from icecream import ic
x = 12
def mult(x):
    return x*4
    y = mult(ic(x))
    ic(y)

Depurando usando a ferramenta py-spy

Você pode usar espião para criar perfis de amostras para programas Python como uma ferramenta de depuração. Sem reiniciar o programa ou modificar seu código, o py-spy visualiza a execução do programa Python. Além disso, por ser escrito em Rust, tem um baixo overhead.

Além disso, vale a pena considerar que usar py-spy no código Python de produção é seguro porque ele executa um processo diferente do programa Python com perfil.

  Como usar o Google Tradutor offline no seu telefone

Como todas as outras ferramentas anteriores que vimos, você pode usar a ferramenta py-spy depois de instalá-la.

pip install py-spy 

Apesar de seu programa Python servir tráfego de produção, você ainda pode criar perfil e depurar este programa usando py-spy, tornando-o uma ferramenta crítica de criação de perfil Python.

Depurador Viztracer

Como alternativa, você pode usar o viztracer, uma ferramenta de depuração, para rastrear e visualizar a execução do seu programa Python. É também uma ferramenta de criação de perfil com registro de baixa sobrecarga.

O que faz o viztracer uma ferramenta de depuração eficaz?

  • Usá-lo é bem fácil e não depende de pacotes externos para funcionar.
  • O Viztracer opera em todas as plataformas de sistema operacional: Windows, Linux ou macOS.
  • Seu poderoso front-end renderiza suavemente o rastreamento no nível de GB.
  • Ele usa RegEx para registrar funções arbitrárias e informações extras como variáveis ​​e atributos, Exceções levantadas, Operações do coletor de lixoetc., sem modificar nenhuma seção de código em seu código-fonte.
  • O que torna o viztracer uma ferramenta de depuração de baixa sobrecarga é sua capacidade de filtrar dados que você não precisa em seu programa. Em seguida, ele retém informações antigas antes de despejar o log no formato JSON.
  • Você pode usá-lo para inserir eventos personalizados como o evento instantâneoa evento variávele as Duração do evento à medida que o programa é executado. Dessa forma, ele funciona como um depurador de impressão, exceto que o viztracer permite que você saiba quando a impressão ocorre enquanto você rastreia os dados.

Conclusão

A criação de perfil e depuração do Python, assim como a criação de perfil de software, é uma etapa fundamental em um desenvolvimento que exige atenção. Esta etapa ajuda a descartar quaisquer seções de código com bugs para que o desempenho geral do código seja otimizado.

As ferramentas de depuração que abordamos acima são ferramentas eficientes que facilitam bastante o trabalho de um desenvolvedor Python.

Vendo que as outras ferramentas de depuração funcionam de forma mais eficaz do que o cProfiler, você pode, como um verdadeiro herói, depurar seu código Python e corrigir possíveis bugs usando esses depuradores para evitar que seu código seja executado sem travar.

Boa depuração!