bashdb (debugger bash), tracer une fonction externe ($FPATH)
Bonjour,
Lorsque je debogue un script avec bashdb, la trace des fonctions internes au script tracé fonctionne.
Par contre, des fonctions externes présentes dans un répertoire déclaré dans $FPATH ne sont pas traitées.
Exemple ci-dessous :
fonctions externes appelées : Fg7VarInit (ligne 453), Fg7Rapport (ligne 458)
fonction interne appelée : fInitVar (ligne 459)
Le debugger commence à la ligne 453 sur l'appel de la fonction Fg7VarInit
- je fais exécuter 10 étapes (step 10)
- le Debugger :
. affiche un message d'anomalie / line 453: Fg7VarInit: command not found
. ignore la fonction Fg7Rapport sur la ligne 458
. se débranche dans la fonction interne fInitVar, ligne 459 :
ligne 18 du script, déclaration de la fonction fInitVar(){ ...
- print $REF_DJDE, le "dump" de la variable $REF_DJDE (affectée dans fInitVar) est concluant.
- print $VAR_Fg7Rapport, le "dump" de la variable $VAR_Fg7Rapport (affectée dans la fonction Fg7Rapport ) est négatif.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
451: # Initialisation des Variables
452: # Appel de l'initiation de variable pour les variables communes
453: => Fg7VarInit -c
454: export gTrace="$BIBLOG/LOGop/op-djde-`date +%y%m%d`"
455: export gDebug=$BIBTMP/LanceopDJDE.Debug.$$.log
456: exec >>$gDebug 2>&1
457: typeset -i IdFluxOpp
458: Fg7Rapport $kcSTART "$0"
459: fInitVar
460: # On regarde si un traitement est en cours avant de lancer
461: typeset -i EnCours=`ls -l *-DJDEX 2>/dev/null | wc -l`
462: if [ $EnCours -gt 0 ] ; then
bashdb<12> step 10
+step 10
./lanceopDJDE_bdoc.sh: line 453: Fg7VarInit: command not found
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:454):
level 1, subshell 0, depth 0: export gTrace="$BIBLOG/LOGop/op-djde-`date +%y%m%d`"
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:454):
level 1, subshell 1, depth 0: export gTrace="$BIBLOG/LOGop/op-djde-`date +%y%m%d`"
date +%y%m%d
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:455):
level 1, subshell 0, depth 0: export gDebug=$BIBTMP/LanceopDJDE.Debug.$$.log
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:456):
level 1, subshell 0, depth 0: exec >>$gDebug 2>&1
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:457):
level 1, subshell 0, depth 0: typeset -i IdFluxOpp
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:458):
level 1, subshell 0, depth 0: Fg7Rapport $kcSTART "$0"
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:459):
level 1, subshell 0, depth 0: fInitVar
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:18):
level 1, subshell 0, depth 1: fInitVar(){
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:19):
level 1, subshell 0, depth 1: REF_DJDE=$BIBREF/djde_param.tab
(/pexp/opp/shl/lanceopDJDE_bdoc.sh:20):
20: FicError=$BIBTMP/$$FicError
bashdb<13> print $REF_DJDE
+print $REF_DJDE
/pexp/opp/ref/djde_param.tab
bashdb<14> print $VAR_Fg7Rapport
+print $VAR_Fg7Rapport
bashdb<15> |
GNU bash, version 4.2.0(1)
bashdb, release 4.2-0.8
Fonctions externes dans $FPATH :
/pexp/opp/shl/routine:/expl/prod/shl/routine
Code:
1 2 3 4 5 6 7 8 9
|
/pexp/opp/shl/routine)# ls -1 Fg7*
Fg7Mail
Fg7MoInit
Fg7PrintInit
Fg7Rapport
Fg7TEST
Fg7VarComPar
Fg7VarInit |
Je suppose que le debugger est capable de tracer des fonctions externes.
Donc, j'ai du zapper une option ou un paramétrage de bashdb !
A l'avance, merci pour votre aide :calim2:
Variable FPATH gérée par le Korn shell mais pas par le bash
Bonjour,
@N Bah
Merci, ta réponse m'a mis sur la bonne voie.
La variable FPATH est gérée par le Korn shell mais pas par le bash
Au temps pour moi, je suis un utilisateur de ksh mais un newbie en bash.
J'ai inséré au début de mon script les commandes suivantes et cela fonctionne :ccool:
Code:
1 2 3
|
source $FPATH/Fg7VarInit
source $FPATH/Fg7Rapport |