Outils pour utilisateurs

Outils du site


dev:bash:debogage

Ceci est une ancienne révision du document !


Débogage de scripts shell

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):

bash -n monscript.sh

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 '+';

#!/bin/bash -x
# Les commandes présentes dans ce script sont affichées
# Le shell est invoqué avec l'option xtrace

A tout moment dans un script on peut activer désactiver l'option via la commande interne set:

# activer l'affichage des commandes avant exécution
set -x
 
# équivalent
set -o xtrace
 
# désactiver l'affichage des commandes avant exécution
set +x

Ci dessous quelques options couramment utilisées pour déboguer:

Notation courte Notation longue Résultat
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 avant de l'executer.

bashdb

Il existe un débogueur dont la syntaxe est proche de gdb: bashdb. Il s'appuie sur une option de Bash (extdebug).

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

Références

dev/bash/debogage.1669161853.txt.gz · Dernière modification : 2022/11/23 00:04 de yoann