Editado 3 meses atrás por ExtremeHow Equipe Editorial
PythonDepuraçãoPDBSolução de problemasLinha de comandoJanelasMacLinuxProgramaçãoDesenvolvimento
Tradução atualizada 3 meses atrás
Python é uma linguagem de programação versátil e amplamente utilizada, elogiada por sua legibilidade e simplicidade. No entanto, como qualquer outra linguagem de programação, o código Python pode conter bugs. Depurar é uma habilidade essencial para qualquer desenvolvedor, pois permite identificar e corrigir problemas em seu código. Em Python, uma das ferramentas mais populares para depuração é o PDB, o Depurador de Python. Este artigo explicará em detalhes como depurar código Python usando o PDB.
PDB significa Depurador Python, é uma ferramenta de depuração embutida que vem com o Python. Ela permite que os desenvolvedores examinem seu código, inspecionem variáveis e identifiquem onde as coisas estão dando errado. O PDB é uma ferramenta de linha de comando que pode parecer intimidadora no início, mas uma vez que você se acostuma, torna-se incrivelmente poderosa e útil.
Antes de começar a depurar, é importante entender alguns comandos básicos no PDB. Aqui estão alguns comandos importantes que você usará:
Para começar a usar o PDB, você pode invocá-lo a partir da linha de comando enquanto executa seu script Python. Digamos que você tenha um script chamado example.py
. Você pode iniciar o depurador assim:
python -m pdb example.py
Este comando executa seu script sob o PDB, e você poderá começar a depurar a partir da primeira linha do seu script.
Os pontos de interrupção são muito importantes na depuração com PDB. Eles permitem que você pare a execução do seu código em um ponto específico. Uma vez que o programa pare, você pode inspecionar o ambiente, variáveis e fluxo de execução.
Você pode definir um ponto de interrupção em um número de linha específico da seguinte maneira:
b 10
Aqui, o depurador irá parar a execução na linha 10 do seu script. Você também pode definir um ponto de interrupção na função:
b my_function
Este comando interromperá a execução sempre que a my_function
for chamada.
Avançar pelo código é uma tarefa comum na depuração. Isso permite que você execute o programa linha por linha e observe o fluxo de execução. Você pode usar o comando 'n' para mover para a próxima linha em seu código:
n
Se estiver interessado em entrar na chamada de função, use o comando 's':
s
A diferença entre 'n' e 's' é importante: enquanto 'n' move para a próxima linha no escopo atual, 's' entra em qualquer função chamada na posição atual.
Inspecionar variáveis é outra parte importante da depuração. Você pode verificar o valor das variáveis com o comando 'p':
p variable_name
Para expressões mais complexas, basta digitar esta expressão:
p my_variable + 10
Isto irá avaliar my_variable + 10
e imprimir o resultado.
Depois de terminar de inspecionar ou avançar pelo seu código, você pode querer continuar a execução normal. Para fazer isso, use o comando 'c':
c
Isso continuará a execução até que outro ponto de interrupção seja atingido ou o programa termine.
Vamos considerar um exemplo simples de como o PDB pode ser usado. Digamos que temos o seguinte script, que possui um bug:
def add_numbers(a, b): return a + b def main(): result = add_numbers(3, "4") print("The result is:", result) if __name__ == "__main__": main()
Neste script, há um bug na função main
. A função add_numbers
é chamada com uma string em vez de um inteiro, o que gerará um TypeError
.
Para depurar isso, vamos executar o script com PDB:
python -m pdb script_name.py
O depurador inicia, e você pode definir um ponto de interrupção no ponto de interesse, talvez onde a função add_numbers
é chamada:
b main c
O programa é executado até atingir um ponto de interrupção na função main
. A partir daqui, você pode inspecionar a linha problemática:
ss pa pb
Esses comandos ajudarão você a identificar que as entradas para a função add_numbers
são do tipo errado. Você verá que b
é na verdade uma string, levando a um TypeError
.
Depois de terminar a depuração, você pode sair do PDB usando o comando 'q':
q
Isso encerrará o depurador e finalizará o programa.
Além dos comandos básicos, o PDB fornece recursos avançados que podem aprimorar sua experiência de depuração:
b 10, a == 5
import pdb import traceback try: main() except Exception: traceback.print_exc() pdb.post_mortem()
pdb.set_trace()
diretamente em seu código onde deseja parar o depurador:import pdb def buggy_function(): a = 10 b = "5" pdb.set_trace() # Inicie a depuração aqui return a + b buggy_function()
Aprender a usar o PDB pode aprimorar muito sua habilidade de depurar e entender programas Python. Embora possa levar algum tempo para se familiarizar com todos os comandos, a recompensa é uma compreensão mais profunda e abrangente da sua base de código. Lembre-se de que depurar não é apenas encontrar e corrigir erros, mas uma oportunidade de melhorar sua compreensão da lógica e do fluxo de sua aplicação. Com o PDB, você tem uma ferramenta poderosa para inspecionar, avaliar e melhorar seu código Python de forma eficiente.
Depurar é uma parte vital do desenvolvimento de software, e dominar ferramentas como o PDB pode aumentar significativamente sua produtividade e qualidade do código. Com prática e experiência, você se verá depurando mais rápido e de forma mais eficaz.
Se você encontrar algo errado com o conteúdo do artigo, você pode