Changeset 823


Ignore:
Timestamp:
03/12/13 11:51:16 (11 years ago)
Author:
sdipsl
Message:
  • We will use again PushStack? and PopStack?. Enhance and simplify things a little. KSH and BASH can DRYRUN more than 600 PeriodNB AND create the full call tree.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_debug/libIGCM_debug.ksh

    r785 r823  
    2727typeset DEBUG_debug=${DEBUG_debug:=false} 
    2828 
     29# Where the stack file containing call tree will be stored. 
     30typeset StackFileLocation=${StackFileLocation:=${PWD}} 
     31 
    2932if ( $DEBUG_debug ) ; then 
    30   if [ -f stack ] ; 
     33  if [ -f ${StackFileLocation}/stack ] ; 
    3134  then 
    32     echo "Stack of an libIGCM job :" >> stack 
     35    echo "Stack of an libIGCM job :" >> ${StackFileLocation}/stack 
    3336  else 
    34     echo "Stack of an libIGCM job :" >  stack 
     37    echo "Stack of an libIGCM job :" >  ${StackFileLocation}/stack 
    3538  fi 
    3639fi 
     
    7780    # (c'est donc l'inverse de la norme d'affichage). 
    7881    typeset i decal 
    79     (( i=0 )) 
     82    i=0 
    8083    until [ $i -eq ${IGCM_debug_LenStack} ]; do 
    8184      decal=0 
    8285      until [ $decal -eq ${i} ]; do 
    8386        printf -- ' ' 
    84         let $(( decal=decal+1 )) 
     87        (( decal = decal + 1 )) 
    8588      done 
    8689      echo "$i - ${IGCM_debug_Stack[$(( $IGCM_debug_LenStack-$i-1 ))]}"\ 
    8790           "(${IGCM_debug_StackArgs[$(( $IGCM_debug_LenStack-$i-1 ))]})" 
    88       let $((i=i+1)) 
     91      ((i = i + 1)) 
    8992    done 
    9093    echo "!------------------------!" 
     
    98101function IGCM_debug_PushStack { 
    99102  if ( $DEBUG_debug ) ; then 
    100     typeset decal 
    101     echo >> stack 
     103    typeset decal inputs 
     104    echo >> ${StackFileLocation}/stack 
    102105    decal=0 
    103     while [ $decal -lt ${IGCM_debug_LenStack} ]; do 
    104 #          printf -- ' ' >> stack 
    105       printf ' ' >> stack 
    106       let $(( decal=decal+1 )) 
     106    while [ ${decal} -lt ${IGCM_debug_LenStack} ]; do 
     107      printf ' ' >> ${StackFileLocation}/stack 
     108      (( decal = decal + 1 )) 
    107109    done 
    108     echo "> ${IGCM_debug_LenStack} : ${@}" >> stack 
    109  
     110    echo "> ${IGCM_debug_LenStack} : ${@}" >> ${StackFileLocation}/stack 
     111 
     112    # STORE input list in an indexed array 
     113    INPUTS=( $@ ) 
    110114    # We add function call name on beginning of the stack 
    111115    set +A IGCM_debug_Stack -- ${1} ${IGCM_debug_Stack[*]} 
     
    115119    # Then, we shift StackArgs tabular 
    116120    if [ $# -gt 1 ]; then  
    117       shift;  
    118       IGCM_debug_StackArgs[0]=$(echo ${@} | sed -e "s/\ /,/g") >&2 
     121      IGCM_debug_StackArgs[0]=$(echo ${INPUTS[*]:1} | sed -e "s/\ /,/g") 
    119122    fi 
    120123    (( IGCM_debug_LenStack = IGCM_debug_LenStack + 1 )) 
     
    132135  if ( $DEBUG_debug ) ; then 
    133136    if ( ${ExitFlag} ) ; then 
    134       echo '!!! ExitFlag has been activated !!!' >> stack 
    135     fi 
     137      echo '!!! ExitFlag has been activated !!!' >> ${StackFileLocation}/stack 
     138    fi 
     139    typeset decal 
    136140    if [ "${IGCM_debug_Stack[0]}" = "${1}" ]; then 
    137       let $(( IGCM_debug_LenStack = IGCM_debug_LenStack - 1 )) 
    138  
    139       IGCM_debug_Stack[0]=""  
    140       IGCM_debug_StackArgs[0]="" 
    141        
    142       set +A tmpStack -- ${IGCM_debug_Stack[*]} 
    143       unset IGCM_debug_Stack 
    144       set +A IGCM_debug_Stack -- ${tmpStack[*]}  
    145  
    146       set +A tmpStack -- ${IGCM_debug_StackArgs[*]} 
    147       unset IGCM_debug_StackArgs 
    148       set +A IGCM_debug_StackArgs -- ${tmpStack[*]} 
    149       unset tmpStack 
     141      (( IGCM_debug_LenStack = IGCM_debug_LenStack - 1 )) 
     142      set -A IGCM_debug_Stack -- ${IGCM_debug_Stack[*]:1} 
     143      set -A IGCM_debug_StackArgs -- ${IGCM_debug_StackArgs[*]:1} 
    150144    else 
    151145      echo 'IGCM_debug_Exit : stack is corrupted ! LenStack =' ${IGCM_debug_LenStack} 
    152146      IGCM_debug_Exit $@ 
    153147    fi 
    154     typeset decal=0 
    155     while [ $decal -lt ${IGCM_debug_LenStack} ]; do 
    156       # printf -- ' ' >> stack 
    157       printf ' ' >> stack 
    158       (( decal=decal+1 )) 
     148    decal=0 
     149    while [ ${decal} -lt ${IGCM_debug_LenStack} ]; do 
     150      printf ' ' >> ${StackFileLocation}/stack 
     151      (( decal = decal + 1 )) 
    159152    done 
    160     echo "< ${IGCM_debug_LenStack} : ${@}" >> stack 
     153    echo "< ${IGCM_debug_LenStack} : ${@}" >> ${StackFileLocation}/stack 
    161154 
    162155    if [ ${IGCM_debug_LenStack} = 0 ]; then 
     
    172165      IGCM_debug_StackArgs[0]=${NULL_STR} 
    173166    fi 
    174  
    175167  fi 
    176168  #IGCM_debug_CallStack 
     
    203195    fi 
    204196    if ( $DEBUG_debug ) ; then 
    205       IGCM_sys_Cp stack ${SUBMIT_DIR}/stack_error 
    206197      echo "Your files on ${R_OUT} :" 
    207198      IGCM_sys_Tree ${R_SAVE} 
     
    228219      echo "                        EXIT THE JOB." 
    229220      echo 
    230       if ( $DEBUG_debug ) ; then 
    231         IGCM_sys_Cp stack ${SUBMIT_DIR}/stack_error 
    232         echo 
    233       fi 
    234221      # Mail notification 
    235222      #IGCM_sys_SendMailPost 
Note: See TracChangeset for help on using the changeset viewer.