IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

bashdb (debugger bash), tracer une fonction externe ($FPATH)


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 12
    Points
    12
    Par défaut 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 : 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

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 469
    Points
    19 469
    Par défaut
    Bonjour,

    le debugger ne doit-il pas lire la ligne où est sourcé le fichier qui contient les "fonctions externes" pour pouvoir exécuter ces fonctions ?

    tu sembles tenir pour acquis que FPATH est une variable interne de BASH, mais je ne la trouve pas dans le man

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 12
    Points
    12
    Par défaut 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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    source $FPATH/Fg7VarInit
    source $FPATH/Fg7Rapport

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment tracer une fonction ?
    Par informatik dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 15/06/2006, 09h55
  2. Réponses: 12
    Dernier message: 12/05/2006, 09h21
  3. Réponses: 8
    Dernier message: 25/04/2006, 16h08
  4. [LG] Tracer une fonction f(x)
    Par lishou dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2006, 16h20
  5. lire une image et tracer une fonction
    Par Battosaiii dans le forum C
    Réponses: 4
    Dernier message: 23/11/2005, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo