Added gitignore entries needed to ignore derived objects generated from full build...
[bash.git] / tests / dbg-support.tests
blobad06d011920ef99e8351c79ce0c8147c1bd6fba8
1 #!../bash
3 # Test correct functioning bash debug support not via the bashdb
4 # debugger but merely by printing via print_trap()
5 # $Id: dbg-support.tests,v 1.13 2003/02/17 22:02:25 rockyb Exp $
6 shopt -s extdebug
7 print_debug_trap() {
8    echo "debug lineno: $1 ${FUNCNAME[1]}"
9    return
12 print_return_trap() {
13    echo "return lineno: $1 ${FUNCNAME[1]}"
14    return
17 fn1() {
18     echo "LINENO $LINENO"
19     echo "LINENO $LINENO"
20     echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]}
21     echo "FUNCNAME[0]" ${FUNCNAME[0]}
22     echo `caller`
23     echo `caller 0`
24     echo `caller 1`
25     echo `caller foo`
26 }    
28 fn2() {
29     echo "fn2 here. Calling fn1..."
30     fn1
31 }    
33 fn3() {
34     echo "LINENO $LINENO"
35     echo "BASH_SOURCE[0]" ${BASH_SOURCE[0]}
36     
37     # Print a stack trace
38     declare -i n
39     n=${#FUNCNAME[@]}
40     for (( i=0 ; (( i < $n )) ; i++ )) ; do 
41         local -i j=i+1
42         [ $j -eq $n ] && j=i  # main()'s file is the same as the first caller
43         echo "${FUNCNAME[$i]} called from file " \
44             "\`${BASH_SOURCE[$j]}' at line ${BASH_LINENO[$j]}"
45     done
46     source ./dbg-support.sub
47 }    
49 fn4() {
50     echo "fn4 here. Calling fn3..."
51     fn3
52 }    
55 #!../bash
57 # Test of support for debugging facilities in bash
58
59 # Test debugger set option functrace - set on. Not in vanilla Bash 2.05
61 set -o functrace
62 trap 'print_debug_trap $LINENO' DEBUG
63 trap 'print_return_trap $LINENO' RETURN
65 # Funcname is now an array, but you still can't see it outside a function
66 echo "FUNCNAME" ${FUNCNAME[0]:-main}
68 # We should trace into the below. 
69 # Start easy with a simple function.
70 fn1
71 fn2
72 fn3
73 source ./dbg-support.sub
75 # Test debugger set option functrace - set off
76 set +T
78 # We should not trace into this.
79 fn1
80 fn2
81 fn3
82 fn4
83 source ./dbg-support.sub
85 # Another way to say: set -o functrace
86 set -T
88 # We should trace into this.
89 source ./dbg-support.sub
90 set +T
92 # Test that the line numbers in the presence of conditionals are correct.
93 for (( i=0 ; (( i <= 2 )) ; i++ )) ; do 
94     if [ $i -eq 2 ] ; then
95         echo "Hit 2"
96     fi
97     j=4
98 done
101 # Check line numbers in command substitution
103 echo $(sourced_fn)
104 echo `sourced_fn`
105 x=$((sourced_fn))
106 x={ sourced_fn }
108 # Make sure we step into sourced_fn as a comand when we request to do so.
109 # Vanilla bash 2.0 doesn't do.
110 set -o functrace
111 x={ sourced_fn }
113 # Should see line number of xyzzy below. Vanilla bash 2.05b doesn't do
114 case xyzzy in
115  a )
116     x=5
117     ;; 
118  xyzz? )
119     case 3 in 
120       2 ) 
121         x=6 ;;
122       3 ) 
123         echo "got it" ;;
124       * ) echo "no good" ;;
125       esac
126     ;;
127  * )
128 esac
130 # Should see line numbers for initial for lines.
131 for i in 0 1 ; do
132   for j in 3 4 ; do
133     ((x=i+j))
134   done
135 done
137 ${THIS_SH} ./dbg-support3.sub
139 #;;; Local Variables: ***
140 #;;; mode:shell-script ***
141 #;;; eval: (sh-set-shell "bash") ***
142 #;;; End: ***