Recherche…


Déboguer un script bash avec "-x"

Utilisez "-x" pour activer la sortie de débogage des lignes exécutées. Il peut être exécuté sur une session ou un script entier ou activé par programmation dans un script.

Exécutez un script avec la sortie de débogage activée:

$ bash -x myscript.sh

Ou

$ bash --debug myscript.sh

Activez le débogage dans un script bash. Il peut éventuellement être réactivé, bien que la sortie de débogage soit automatiquement réinitialisée à la fermeture du script.

#!/bin/bash
set -x   # Enable debugging
# some code here
set +x   # Disable debugging output. 

Vérification de la syntaxe d'un script avec "-n"

L'option -n vous permet de vérifier la syntaxe d'un script sans avoir à l'exécuter:

~> $ bash -n testscript.sh
testscript.sh: line 128: unexpected EOF while looking for matching `"'
testscript.sh: line 130: syntax error: unexpected end of file

Déboguer usigh bashdb

Bashdb est un utilitaire similaire à gdb, dans la mesure où vous pouvez définir des points d'arrêt sur une ligne ou sur une fonction, imprimer du contenu de variables, relancer l'exécution du script, etc.

Vous pouvez normalement l'installer via votre gestionnaire de paquets, par exemple sur Fedora:

sudo dnf install bashdb 

Ou l'obtenir de la page d'accueil . Ensuite, vous pouvez l'exécuter avec votre script en tant que paramètre:

bashdb <YOUR SCRIPT>

Voici quelques commandes pour vous aider à démarrer:

l - show local lines, press l again to scroll down
s - step to next line 
print $VAR - echo out content of variable 
restart - reruns bashscript, it re-loads it prior to execution.
eval - evaluate some custom command, ex: eval echo hi

b <line num> set breakpoint on some line 
c - continue till some breakpoint 
i b - info on break points 
d <line #> - delete breakpoint at line #

shell - launch a sub-shell in the middle of execution, this is handy for manipulating variables

Pour plus d'informations, je vous recommande de consulter le manuel: http://www.rodericksmith.plus.com/outlines/manuals/bashdbOutline.html

Voir aussi la page d'accueil:
http://bashdb.sourceforge.net/



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow