debug lineno: 63 main
debug lineno: 66 main
FUNCNAME main
debug lineno: 70 main
debug lineno: 17 fn1
debug lineno: 18 fn1
LINENO 18
debug lineno: 19 fn1
LINENO 19
debug lineno: 20 fn1
BASH_SOURCE[0] ./dbg-support.tests
debug lineno: 21 fn1
FUNCNAME[0] fn1
debug lineno: 22 fn1
debug lineno: 22 fn1 70 ./dbg-support.tests
debug lineno: 23 fn1
debug lineno: 23 fn1 70 main ./dbg-support.tests
debug lineno: 24 fn1
debug lineno: 24 fn1
debug lineno: 25 fn1
./dbg-support.tests: line 25: caller: foo: invalid number
caller: usage: caller [expr]
debug lineno: 25 fn1
debug lineno: 17 fn1
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 17 fn1
debug lineno: 14 print_return_trap
debug lineno: 71 main
debug lineno: 28 fn2
debug lineno: 29 fn2
fn2 here. Calling fn1...
debug lineno: 30 fn2
debug lineno: 17 fn1
debug lineno: 18 fn1
LINENO 18
debug lineno: 19 fn1
LINENO 19
debug lineno: 20 fn1
BASH_SOURCE[0] ./dbg-support.tests
debug lineno: 21 fn1
FUNCNAME[0] fn1
debug lineno: 22 fn1
debug lineno: 22 fn1 30 ./dbg-support.tests
debug lineno: 23 fn1
debug lineno: 23 fn1 30 fn2 ./dbg-support.tests
debug lineno: 24 fn1
debug lineno: 24 fn1 71 main ./dbg-support.tests
debug lineno: 25 fn1
./dbg-support.tests: line 25: caller: foo: invalid number
caller: usage: caller [expr]
debug lineno: 25 fn1
debug lineno: 17 fn1
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 17 fn1
debug lineno: 14 print_return_trap
debug lineno: 28 fn2
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 28 fn2
debug lineno: 14 print_return_trap
debug lineno: 72 main
debug lineno: 33 fn3
debug lineno: 34 fn3
LINENO 34
debug lineno: 35 fn3
BASH_SOURCE[0] ./dbg-support.tests
debug lineno: 38 fn3
debug lineno: 39 fn3
debug lineno: 40 fn3
debug lineno: 40 fn3
debug lineno: 41 fn3
debug lineno: 42 fn3
debug lineno: 43 fn3
fn3 called from file  `./dbg-support.tests' at line 0
debug lineno: 40 fn3
debug lineno: 40 fn3
debug lineno: 41 fn3
debug lineno: 42 fn3
debug lineno: 42 fn3
debug lineno: 43 fn3
main called from file  `./dbg-support.tests' at line 0
debug lineno: 40 fn3
debug lineno: 40 fn3
debug lineno: 46 fn3
debug lineno: 18 source
SOURCED LINENO 18
debug lineno: 19 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
debug lineno: 20 source
debug lineno: 3 sourced_fn
debug lineno: 4 sourced_fn
debug lineno: 5 sourced_fn
SOURCED FN LINENO 5
debug lineno: 8 sourced_fn
debug lineno: 9 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[1]: source called from ./dbg-support.tests at line 46
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 72
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[3]: main called from ./dbg-support.tests at line 0
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 3 sourced_fn
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 3 sourced_fn
debug lineno: 14 print_return_trap
debug lineno: 46 fn3
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 46 fn3
debug lineno: 14 print_return_trap
debug lineno: 33 fn3
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 33 fn3
debug lineno: 14 print_return_trap
debug lineno: 73 main
debug lineno: 18 source
SOURCED LINENO 18
debug lineno: 19 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
debug lineno: 20 source
debug lineno: 3 sourced_fn
debug lineno: 4 sourced_fn
debug lineno: 5 sourced_fn
SOURCED FN LINENO 5
debug lineno: 8 sourced_fn
debug lineno: 9 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[1]: source called from ./dbg-support.tests at line 73
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 3 sourced_fn
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 3 sourced_fn
debug lineno: 14 print_return_trap
debug lineno: 73 main
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 73 main
debug lineno: 14 print_return_trap
debug lineno: 76 main
debug lineno: 79 main
LINENO 18
LINENO 19
BASH_SOURCE[0] ./dbg-support.tests
FUNCNAME[0] fn1
79 ./dbg-support.tests
79 main ./dbg-support.tests

./dbg-support.tests: line 25: caller: foo: invalid number
caller: usage: caller [expr]

debug lineno: 80 main
fn2 here. Calling fn1...
LINENO 18
LINENO 19
BASH_SOURCE[0] ./dbg-support.tests
FUNCNAME[0] fn1
30 ./dbg-support.tests
30 fn2 ./dbg-support.tests
80 main ./dbg-support.tests
./dbg-support.tests: line 25: caller: foo: invalid number
caller: usage: caller [expr]

debug lineno: 81 main
LINENO 34
BASH_SOURCE[0] ./dbg-support.tests
fn3 called from file  `./dbg-support.tests' at line 0
main called from file  `./dbg-support.tests' at line 0
SOURCED LINENO 18
SOURCED BASH_SOURCE[0] ./dbg-support.sub
SOURCED FN LINENO 5
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
FUNCNAME[1]: source called from ./dbg-support.tests at line 46
FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 81
FUNCNAME[3]: main called from ./dbg-support.tests at line 0
debug lineno: 82 main
fn4 here. Calling fn3...
LINENO 34
BASH_SOURCE[0] ./dbg-support.tests
fn3 called from file  `./dbg-support.tests' at line 82
fn4 called from file  `./dbg-support.tests' at line 0
main called from file  `./dbg-support.tests' at line 0
SOURCED LINENO 18
SOURCED BASH_SOURCE[0] ./dbg-support.sub
SOURCED FN LINENO 5
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
FUNCNAME[1]: source called from ./dbg-support.tests at line 46
FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 51
FUNCNAME[3]: fn4 called from ./dbg-support.tests at line 82
FUNCNAME[4]: main called from ./dbg-support.tests at line 0
debug lineno: 83 main
SOURCED LINENO 18
SOURCED BASH_SOURCE[0] ./dbg-support.sub
SOURCED FN LINENO 5
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
FUNCNAME[1]: source called from ./dbg-support.tests at line 83
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
return lineno: 83 main
debug lineno: 86 main
debug lineno: 89 main
debug lineno: 18 source
SOURCED LINENO 18
debug lineno: 19 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
debug lineno: 20 source
debug lineno: 3 sourced_fn
debug lineno: 4 sourced_fn
debug lineno: 5 sourced_fn
SOURCED FN LINENO 5
debug lineno: 8 sourced_fn
debug lineno: 9 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[1]: source called from ./dbg-support.tests at line 89
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 3 sourced_fn
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 3 sourced_fn
debug lineno: 14 print_return_trap
debug lineno: 89 main
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 89 main
debug lineno: 14 print_return_trap
debug lineno: 90 main
debug lineno: 93 main
debug lineno: 93 main
debug lineno: 94 main
debug lineno: 97 main
debug lineno: 93 main
debug lineno: 93 main
debug lineno: 94 main
debug lineno: 97 main
debug lineno: 93 main
debug lineno: 93 main
debug lineno: 94 main
debug lineno: 95 main
Hit 2
debug lineno: 97 main
debug lineno: 93 main
debug lineno: 93 main
debug lineno: 103 main
SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 103 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
debug lineno: 104 main
SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 104 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
debug lineno: 105 main
debug lineno: 106 main
SOURCED FN LINENO 5
FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 106
FUNCNAME[1]: main called from ./dbg-support.tests at line 0
debug lineno: 110 main
debug lineno: 111 main
debug lineno: 3 sourced_fn
debug lineno: 4 sourced_fn
debug lineno: 5 sourced_fn
SOURCED FN LINENO 5
debug lineno: 8 sourced_fn
debug lineno: 9 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 111
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 11 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 12 sourced_fn
debug lineno: 13 sourced_fn
FUNCNAME[1]: main called from ./dbg-support.tests at line 0
debug lineno: 10 sourced_fn
debug lineno: 10 sourced_fn
debug lineno: 3 sourced_fn
debug lineno: 12 print_return_trap
debug lineno: 13 print_return_trap
return lineno: 3 sourced_fn
debug lineno: 14 print_return_trap
debug lineno: 114 main
debug lineno: 119 main
debug lineno: 123 main
got it
debug lineno: 131 main
debug lineno: 132 main
debug lineno: 133 main
debug lineno: 132 main
debug lineno: 133 main
debug lineno: 131 main
debug lineno: 132 main
debug lineno: 133 main
debug lineno: 132 main
debug lineno: 133 main
debug lineno: 137 main
main: calling f1
f1: calling f2
f2: calling f3
f3: calling callstack
deep 6
0 z
1 3
2 y
3 2
4 x
5 1
FUNCNAME stack: f3 f2 f1 main
26 f2 ./dbg-support3.sub
f3: returning
f2: return from f3
f1: return from f2
main: f1 returns
