Outils pour utilisateurs

Outils du site


dev:bash:debogage

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:bash:debogage [2021/02/01 21:51] – modification externe 127.0.0.1dev:bash:debogage [2022/11/23 13:48] (Version actuelle) yoann
Ligne 3: Ligne 3:
 ====== Débogage de scripts shell ====== ====== Débogage de scripts shell ======
  
-Le shell bash peut être invoqué avec l'option **-x** pour activer le mode trace/debug. Les commandes sont affichées sur la sortie standard avant exécution préfixées par le caractère '+';+Avant toute exécution, on peut vouloir valider la syntaxe d'un fichier de script. Pour cela on peut invoquer un shell avec l'option -n (noexec) et le scrit à vérifier en paramètre: 
 + 
 +<code bash
 +bash -n monscript.sh 
 +</code> 
 + 
 +Le shell Bash peut être invoqué avec l'option **-x** pour activer le mode trace/debug. Les commandes sont affichées sur la sortie standard avant exécution préfixées par le caractère '+'
 + 
 +Dans l'exemple ci-dessous le script utilise en première ligne le shabang pour spécifier l'interpréteur à utiliser (bash) avec l'option **-x** (**xtrace**) ainsi les commandes présentes dans le script seront affichées avant exécution.
  
 <code bash> <code bash>
 #!/bin/bash -x #!/bin/bash -x
 # Les commandes présentes dans ce script sont affichées # Les commandes présentes dans ce script sont affichées
 +# Le shell est invoqué avec l'option xtrace
 </code> </code>
  
-A tout moment dans un script on peut activer désactiver l'option via la commande interne **set**:+A tout moment dans un script on peut activer/désactiver l'option via la commande interne **set**:
 <code bash> <code bash>
-activer l'affichage des commandes avant exécution+Activer l'affichage des commandes avant exécution
 set -x set -x
 +
 +# équivalent
 +set -o xtrace
  
 # désactiver l'affichage des commandes avant exécution # désactiver l'affichage des commandes avant exécution
 set +x set +x
 +
 +# équivalent
 +set +o xtrace
 </code> </code>
 +
 +Ci-dessous quelques options couramment utilisées pour le développement et le débogage:
 +
 +^ Notation courte ^ Notation longue ^ Résultat                                      |
 +| set -e          | set -o errexit  | Interruption immédiate lorsqu'un code de retour est différent de 0. |
 +| set -f          | set -o noglob   | Désactive la génération des noms via les méta-caractères (globbing).|
 +| set -v          | set -o verbose  | Affiche les lignes lues avant interprétation. |
 +| set -x          | set -o xtrace   | Affiche la commande avant execution.          |
 +| set -u          | set -o nounset  | Utilisation d'une variable non définie provoque une erreur. |
 +| set -n          | set -o noexec   | Valider la syntaxe d'un fichier script sans executer les commandes. |
 +
 +
 +Pour afficher les options activées par les arguments positionnels:
 +<code bash>
 +echo $-
 +</code>
 +
 +===== bashdb =====
 +
 +Il existe un débogueur dont la syntaxe est proche de gdb: **bashdb**. Il s'appuie sur une option de Bash (extdebug).
 +
 +<note>
 +Sur les versions récentes d'Ubuntu le programme n'est plus intégré au gestionnaire de paquets. Il faudra l'installer à partir des sources, voir https://sourceforge.net/p/bashdb/code/ci/bash-5.1/tree/INSTALL
 +</note>
 +
 +
 +===== Références =====
 +
 +https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
dev/bash/debogage.1612216289.txt.gz · Dernière modification : 2021/02/01 21:51 de 127.0.0.1