Python breakpoint()

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 à forte ligação entre o código real e o código do módulo de depuração. Por exemplo, se estiver a utilizar o depurador pdb, então terá de chamar pdb.set_trace() no código do seu programa. Se desejar utilizar qualquer outro depurador, digamos web-pdb, então terá de remover todo o código relacionado com o PDB e adicionar o método web_pdb.set_trace(). Isso causa uma grande sobrecarga 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 de forma mais flexível.

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, o uso de `breakpoint()` proporciona comodidade no uso de um depurador, pois não precisamos importar explicitamente o módulo pdb. Vamos ver 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)

Ao executar este script, a console do depurador PDB é aberta.

$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”, então 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 facilmente o módulo do depurador sem fazer nenhuma alteração no código. Digamos que queremos usar o depurador web-pdb. Podemos facilmente integrá-lo ao nosso programa usando PYTHONBREAKPOINT=web_pdb.set_trace. Primeiramente, 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 o URL do servidor web fornecido no log do console e você verá a janela do depurador como na imagem abaixo. Podemos emitir comandos PDB usando esta interface de usuário, você pode enviar o comando “c” para continuar e concluir nosso programa.

Resumo

A função breakpoint() do Python é uma adição muito útil ao recurso de depuração do Python. É recomendável usar isso para depurar para que você possa facilmente conectar outros depuradores de terceiros na hora. Também oferece uma opção fácil de 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