Différences
Ci-dessous, les différences entre deux révisions de la page.
tutoriel:programmation:deboguage:bash:start [2022/06/05 08:57] – [Comment combiner les options de débogage pour déboguer un script shell] admin | tutoriel:programmation:deboguage:bash:start [2022/08/13 22:15] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 403: | Ligne 403: | ||
Nous n' | Nous n' | ||
- | Implémentons les variantes -x et -v du script sum_script.sh. J' | + | Implémentons les variantes |
#! /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"</ | echo "The sum is $sum"</ | ||
+ | |||
+ | Maintenant, lancez :< | ||
+ | #! /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</ | ||
+ | |||
+ | Les sorties **-x** et **-v** sont combinées comme indiqué dans l' | ||
+ | |||
+ | De même, nous pouvons combiner l' | ||
+ | |||
+ | Je remplace la variable number1 par num sur la sixième ligne du script :< | ||
+ | #! /bin/bash | ||
+ | echo "Enter first number" | ||
+ | read number1 | ||
+ | echo "Enter second number" | ||
+ | read number2 | ||
+ | sum=$[num + number2] | ||
+ | echo "The sum is $sum"</ | ||
+ | |||
+ | Pour afficher le résultat, exécutez la commande suivante :< | ||
+ | #! /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: | ||
==== Comment rediriger le rapport de débogage vers un fichier ==== | ==== Comment rediriger le rapport de débogage vers un fichier ==== | ||
+ | L' | ||
+ | |||
+ | 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 :< | ||
+ | #! /bin/bash | ||
+ | exec 5> debug_report.log | ||
+ | PS4=' | ||
+ | BASH_XTRACEFD=" | ||
+ | echo "Enter number1" | ||
+ | read number1 | ||
+ | echo "Enter number2" | ||
+ | read number2 | ||
+ | if [ " | ||
+ | then | ||
+ | echo " | ||
+ | elif [ " | ||
+ | then | ||
+ | echo " | ||
+ | else | ||
+ | echo " | ||
+ | fi</ | ||
+ | |||
+ | 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=' | ||
+ | |||
+ | Le script ci-dessus crée un fichier journal nommé debug_report.log, | ||
+ | + exec | ||
+ | + PS4=' | ||
+ | 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-- ' | ||
+ | 12-- ' | ||
+ | 16-- echo ' | ||
+ | </ | ||
===== Pré-requis ===== | ===== Pré-requis ===== | ||
Ligne 423: | Ligne 515: | ||
===== Conclusion ===== | ===== Conclusion ===== | ||
+ | Un code plein d' | ||
+ | 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' | ||
+ | |||
+ | 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 ===== | ||