exec 33<>/dev/tcp/localhost/33333 function _________DEBUG_TRAP () { local _________DEBUG_COMMAND read -u 33 _________DEBUG_COMMAND eval $_________DEBUG_COMMAND } set -o functrace trap _________DEBUG_TRAP DEBUG . _DEBUG.sh echo $SHELL a=1234567890 echo ${a} echo ${a:3} tamhan@TAMHAN14:~/workspace$ bash ./firsttest.sh /bin/bash 1234567890 4567890 sudo apt-get install bashdb tamhan@TAMHAN14:~/workspace$ bashdb ./firsttest.sh bash debugger, bashdb, release 4.2-0.8 ... :: 3: a=1234567890 bashdb<2> bashdb<6> examine a declare -- a="1234567890" function worker { for i in `seq 1 10`; do echo "worker says: " $i done } echo "go!" worker echo "end!" 9: echo "go!" bashdb<0> break worker break 28 Breakpoint 2 set in file parm.sh, line 28. break parm.sh:29 Breakpoint 3 set in file parm.sh, line 29. break 28 if x==5 Breakpoint 4 set in file parm.sh, line 28. bashdb<1> cont source /usr/share/bashdb/bashdb-trace function worker { . . . } echo "go!" worker _Dbg_debugger ; : ; : echo "end!"