La función incorporada de Python `breakpoint()` es una nueva función introducida en Python 3.7. La depuración del código Python siempre ha sido un proceso doloroso debido al acoplamiento estrecho entre el código real y el código del módulo de depuración. Por ejemplo, si estás utilizando el depurador pdb, entonces tendrás que llamar a pdb.set_trace()
en el código de tu programa. Si quieres usar cualquier otro depurador, digamos web-pdb
, entonces tendrás que eliminar todo el código relacionado con PDB y agregar el método web_pdb.set_trace()
. Esto causa una gran sobrecarga en el uso del depurador de Python y hace que el código Python sea difícil de depurar y mantener. Es por eso que Python 3.7 ha introducido el método breakpoint()
que nos permite escribir código de depuración con bajo acoplamiento.
Python breakpoint()
La función breakpoint() de Python llama a la función sys.breakpointhook()
. Por defecto, sys.breakpointhook() llama a la función pdb.set_trace()
. Así que al menos, el uso de breakpoint() proporciona conveniencia al usar un depurador porque no tenemos que importar explícitamente el módulo pdb
. Veamos un ejemplo simple de uso de la función breakpoint(). Tenemos un script de Python llamado python_breakpoint_examples.py
con el siguiente código.
x = 10
y = 'Hi'
z = 'Hello'
print(y)
breakpoint()
print(z)
Cuando ejecutamos este script, se abre la consola del depurador PDB.
$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() – Detener la depuración
La función sys.breakpointhook() de Python utiliza la variable de entorno PYTHONBREAKPOINT para configurar el depurador. Si no está configurada, se utiliza el depurador PDB por defecto. Si se establece en “0”, la función retorna inmediatamente y no se realiza ninguna depuración de código. Es muy útil cuando queremos ejecutar nuestro código sin depurar.
$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$
Python breakpoint() – Cambiar el módulo de depuración
Podemos utilizar la variable de entorno PYTHONBREAKPOINT para proporcionar el método de depuración que será llamado por la función breakpoint(). Esto es muy útil porque podemos cambiar el módulo de depuración fácilmente sin realizar ningún cambio en el código. Digamos que queremos utilizar el depurador web-pdb
. Podemos integrarlo fácilmente en nuestro programa usando PYTHONBREAKPOINT=web_pdb.set_trace
. Antes que nada, asegúrate de que web-pdb esté instalado. Puedes instalarlo usando el comando pip3.7 install web-pdb
.
Según la documentación de web-pdb, es compatible con la nueva función breakpoint() añadida en 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...
Abre la URL del servidor web proporcionada en el registro de la consola y verás la ventana del depurador como en la siguiente imagen.
Podemos emitir comandos PDB utilizando esta interfaz de usuario, puedes enviar el comando “c” para continuar y completar nuestro programa.
Resumen
La función breakpoint() de Python es una adición muy útil a la función de depuración de Python. Se recomienda usar esto para depurar para que puedas enganchar fácilmente otros depuradores de terceros sobre la marcha. También proporciona una opción fácil para desactivar el depurador y ejecutar el programa normalmente.
Puedes consultar más ejemplos de Python desde nuestro Repositorio de GitHub.
Referencia: Documentación Oficial
Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint