¿Cómo depurar/rastrear la función bash?

¿Cómo depurar/rastrear la función bash?

Tengo un script bash myscript.sh, que tiene un montón de funciones internas. Para ejecutar una función, escribiría

source myscript.sh; myfunction

¿Cómo depurar tal función?

Respuesta1

Simplemente agregue estas líneas antes de la sección que desea depurar.

set -v -x -e

y para desactivarlo.

set +v +x +e

Respuesta2

habilite la depuración en su script y la depuración de salida para funciones con functrace.

set -x
set -o functrace

Respuesta3

También deberías poder usar en Bash:

$ set -xT

que permite el seguimiento de funciones y

$ set +xT

deshabilitar.

Además, con referencia a otra respuesta publicada, no recomiendo usar -v para depurar (modo detallado) a menos que esté verificando la sintaxis de un script/conjunto de comandos de Shell. Otra solución (general) que a veces resulta útil es utilizar la -nopción junto con -x. Esto "ejecutará" un script/comandos sin realizar realmente el último paso de ejecutar un comando. Esto a menudo puede permitirle detectar errores difíciles en expansiones de shell y similares sin causar un caos no deseado.

información relacionada