Bash:
Usando un depurador
Cómo hacerlo:
Bash no viene con un depurador incorporado como algunos otros lenguajes, pero puedes usar comandos integrados como set -x
para rastrear lo que está sucediendo. O, para una mejora, está bashdb
, un depurador apropiado para avanzar paso a paso por tu código. Aquí hay un vistazo:
# Usando set -x para depurar
set -x
echo "Iniciando depuración"
my_var="¡Hola, mundo de la depuración!"
echo $my_var
set +x
# Usando bashdb
# Instala bashdb con tu gestor de paquetes, por ejemplo, apt, yum, brew.
# Depura un script llamado my_script.sh:
bashdb my_script.sh
Salida al ejecutar con set -x
:
+ echo 'Iniciando depuración'
Iniciando depuración
+ my_var='¡Hola, mundo de la depuración!'
+ echo '¡Hola, mundo de la depuración!'
¡Hola, mundo de la depuración!
+ set +x
Profundización
Históricamente, depurar scripts de Bash significaba llenar tu código con declaraciones echo
. Pero luego llegó set -x
, que nos ofrece una vista de la ejecución en tiempo real sin impresiones manuales. Y para aquellos que desean más control, apareció el depurador bashdb
, inspirado en el depurador gdb para C/C++.
En cuanto a alternativas, más allá de los comandos set
(-x
, -v
, -e
), otras opciones incluyen redireccionar la salida a un archivo para su análisis o usar herramientas externas como ShellCheck para análisis estático.
En términos de implementación, set -x
es fácil; es una opción nativa de Bash que imprime comandos y sus argumentos a medida que se ejecutan. bashdb
, por otro lado, permite avanzar paso a paso por el código, establecer puntos de interrupción y evaluar expresiones, cosas que te dan una oportunidad de lucha contra errores más escurridizos.
Ver también
- Proyecto Depurador Bash: http://bashdb.sourceforge.net/
- “Pro Bash Programming” por Chris Johnson y Jayant Varma para scripting avanzado.
- ShellCheck para análisis estático: https://www.shellcheck.net/