Python breakpoint()

A função `breakpoint()` do Python é uma nova função integrada introduzida no Python 3.7. O processo de depuração de código Python sempre foi um processo doloroso devido ao acoplamento apertado entre o código real e o código do módulo de depuração. Por exemplo, se você estiver usando o depurador pdb, então terá que chamar pdb.set_trace() no código do seu programa. Se você quiser usar qualquer outro depurador, digamos web-pdb, então terá que remover todo o código relacionado ao PDB e adicionar o método web_pdb.set_trace(). Isso causa uma sobrecarga enorme no uso do depurador Python e torna o código Python difícil de depurar e manter. É por isso que o Python 3.7 introduziu o método breakpoint() que nos permite escrever código de depuração pouco acoplado.

Python breakpoint()

A função `breakpoint()` do Python chama a função sys.breakpointhook(). Por padrão, `sys.breakpointhook()` chama a função pdb.set_trace(). Portanto, pelo menos, usar `breakpoint()` proporciona conveniência ao usar um depurador porque não precisamos importar explicitamente o módulo pdb. Vamos dar uma olhada em um exemplo simples de uso da função `breakpoint()`. Temos um script Python chamado python_breakpoint_examples.py com o seguinte código.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

Quando executamos este script, o console do depurador PDB se abre.

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

Python breakpoint() – Parar a Depuração

A função sys.breakpointhook() do Python utiliza a variável de ambiente PYTHONBREAKPOINT para configurar o depurador. Se não estiver definida, o depurador padrão PDB é utilizado. Se for definida como “0”, a função retorna imediatamente e nenhuma depuração de código é realizada. Isso é muito útil quando queremos executar nosso código sem depuração.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

Python breakpoint() – Alterar Módulo do Depurador

Podemos usar a variável de ambiente PYTHONBREAKPOINT para fornecer o método do depurador a ser chamado pela função breakpoint(). Isso é muito útil porque podemos alterar o módulo do depurador facilmente sem fazer nenhuma alteração no código. Digamos que queiramos usar o depurador web-pdb. Podemos facilmente incorporá-lo em nosso programa usando PYTHONBREAKPOINT=web_pdb.set_trace. Antes de tudo, certifique-se de que o web-pdb está instalado. Você pode instalá-lo usando o comando pip3.7 install web-pdb.

De acordo com a documentação do web-pdb, ele é compatível com a nova função breakpoint() adicionada no Python 3.7.

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

Abra a URL do servidor web fornecida no log do console e você verá a janela de depuração como na imagem abaixo. Podemos emitir comandos PDB usando esta interface, você pode enviar o comando “c” para continuar e concluir nosso programa.

Resumo

A função de ponto de interrupção () do Python é uma adição muito útil ao recurso de depuração do Python. É recomendável usar isso para depuração para que você possa facilmente conectar outros depuradores de terceiros no momento. Também oferece uma opção fácil para desativar o depurador e executar o programa normalmente.

Você pode conferir mais exemplos de Python em nosso Repositório GitHub.

Referência: Documentação Oficial

Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint