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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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