Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

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

Lien vers cette vue comparative

tutoriel:programmation:deboguage:bash:start [2022/06/05 08:57] – [Comment combiner les options de débogage pour déboguer un script shell] admintutoriel:programmation:deboguage:bash:start [2022/08/13 22:15] (Version actuelle) – modification externe 127.0.0.1
Ligne 403: Ligne 403:
 Nous n'utilisons qu'une seule option dans les méthodes de débogage ci-dessus, mais nous pouvons combiner différentes options pour une meilleure compréhension. Nous n'utilisons qu'une seule option dans les méthodes de débogage ci-dessus, mais nous pouvons combiner différentes options pour une meilleure compréhension.
  
-Implémentons les variantes -x et -v du script sum_script.sh. J'utilise le script sum_script.sh :<code bash script.sh>+Implémentons les variantes **-x** et **-v** du script **sum_script.sh**. J'utilise le script **sum_script.sh** :<code bash script.sh>
 #! /bin/bash #! /bin/bash
-trap 'echo "Line ${LINENO}: first number is $number1, second number is $number2, and sum is $sum" ' DEBUG 
 echo "Enter first number" echo "Enter first number"
 read number1 read number1
Ligne 412: Ligne 411:
 sum=$[number1 + number2] sum=$[number1 + number2]
 echo "The sum is $sum"</code> echo "The sum is $sum"</code>
 +
 +Maintenant, lancez :<cli prompt='$ '>...@...:~ $ bash -xv sum_script.sh 
 +#! /bin/bash
 +echo "Enter first number"
 ++ echo 'Enter first number'
 +Enter first number
 +read number1
 ++ read number1
 +4
 +echo "Enter second number"
 ++ echo 'Enter second number'
 +Enter second number
 +read number2
 ++ read number2
 +8
 +sum=$[number1 + number2]
 ++ sum=12
 +echo "The sum is $sum"
 ++ echo 'The sum is 12'
 +The sum is 12</cli>
 +
 +Les sorties **-x** et **-v** sont combinées comme indiqué dans l'image de sortie.
 +
 +De même, nous pouvons combiner l'option **-u** avec verbose -v pour détecter les erreurs.
 +
 +Je remplace la variable number1 par num sur la sixième ligne du script :<code bash sum_script.sh>
 +#! /bin/bash
 +echo "Enter first number"
 +read number1
 +echo "Enter second number"
 +read number2
 +sum=$[num + number2]
 +echo "The sum is $sum"</code>
 +
 +Pour afficher le résultat, exécutez la commande suivante :<cli prompt='$ '>...@...:~ $ bash -uv sum_script.sh 
 +#! /bin/bash
 +echo "Enter first number"
 +Enter first number
 +read number1
 +5
 +echo "Enter second number"
 +Enter second number
 +read number2
 +7
 +sum=$[num + number2]
 +sum_script.sh: ligne 6: num : variable sans liaison</cli>
 ==== Comment rediriger le rapport de débogage vers un fichier ==== ==== Comment rediriger le rapport de débogage vers un fichier ====
  
 +L'enregistrement d'un rapport de débogage de script bash dans un fichier peut être utile dans de nombreuses situations.
 +
 +C'est un peu délicat car rediriger le rapport de débogage vers un fichier ; nous utilisons des variables spéciales.
 +
 +Implémentons-le sur le code b_script.sh :<code - >
 +#! /bin/bash
 +exec 5> debug_report.log
 +PS4='$LINENO-- '
 +BASH_XTRACEFD="5"
 +echo "Enter number1"
 +read number1
 +echo "Enter number2"
 +read number2
 +if [ "$number1" -gt "$number2" ]
 +then
 +echo "Number1 greater than number2"
 +elif [ "$number1" -eq "$number2" ]
 +then
 +echo "Number1 is equal to Number2"
 +else
 +echo "Number2 is greater than Number1"
 +fi</code>
 +
 +Dans la deuxième ligne de code, vous pouvez voir que nous redirigeons la sortie vers le fichier debug_report.log à l'aide de la commande exec avec le descripteur de fichier 5 (FD5).
 +
 +  * **exec 5> debug_report.log** : Dans exec , la commande redirige tout ce qui se passe dans le shell vers le fichier debug_report.log.
 +  * **BASH_XTRACEFD = 5** : variable spécifique à bash qui ne peut être utilisée dans aucun autre shell. Un descripteur de fichier valide doit lui être attribué et bash écrira la sortie extraite dans debug_report.log.
 +  * **PS4='$LINENO– '** : variable bash utilisée pour imprimer le numéro de ligne lors du débogage en mode xtrace. PS4 par défaut : signe +
 +
 +Le script ci-dessus crée un fichier journal nommé debug_report.log, pour le lire, utilisez la commande cat :<cli prompt='$ '>...@...:~ $ bash -x b_script.sh 
 ++ exec
 ++ PS4='$LINENO-- '
 +4-- BASH_XTRACEFD=5
 +Enter number1
 +4
 +Enter number2
 +5
 +Number2 is greater than Number1
 +...@...:~ $  cat debug_report.log 
 +5-- echo 'Enter number1'
 +6-- read number1
 +7-- echo 'Enter number2'
 +8-- read number2
 +9-- '[' 4 -gt 5 ']'
 +12-- '[' 4 -eq 5 ']'
 +16-- echo 'Number2 is greater than Number1'
 +</cli>
 ===== Pré-requis ===== ===== Pré-requis =====
  
Ligne 423: Ligne 515:
 ===== Conclusion ===== ===== Conclusion =====
  
 +Un code plein d'erreurs peut affecter les performances du programme ou nuire au matériel.\\
 +Le débogage est très important pour chaque programme car il le rend plus efficace.\\
 +La détection de bogues existants et potentiels pendant le développement du programme peut empêcher un comportement inattendu dans votre programme.\\
 +Les codes volumineux nécessitent généralement un débogage actif, ce qui améliore l'efficacité du code en éliminant les fragments de code consommateurs de ressources.
 +
 +De nombreux langages de programmation et frameworks ont leurs propres débogueurs compagnons.\\
 +Les scripts bash peuvent implémenter diverses méthodes de débogage de script.\\
 +Ce guide détaille toutes les méthodes qui peuvent être utilisées pour trouver des erreurs dans les scripts bash.\\
 +Donc, chaque fois que vous sentez que votre script bash ne fonctionne pas comme prévu, utilisez l'une des méthodes mentionnées ci-dessus, mais dans la plupart des cas, le mode xtrace (-x) est très utile.
 ===== Problèmes connus ===== ===== Problèmes connus =====