# Copyright (C) 2008-2011, 2016 # Rocky Bernstein # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place, Suite 330, Boston, # MA 02111 USA. # bashdb-part2.sh - bashdb specific code that doesn't need preprocessor # substitution. We put code here rather than bashdb.in for two reasons. # First it helps separate code that undergoes m4 substitution and second # it keeps line number the same more often in integration tests because # this code changes more often making code bashdb.in code change less. # It is the line numbers in that code that appear in tracebacks. # FIXME: should implement "set hidelevel"? # Pull in the rest of the debugger code. source $_Dbg_main # I don't know why when this is done in dbg-opts.sh it doesn't have # an effect. sh-expr 'OPTLIND > 0' && shift "$shExpr('OPTLIND - 1')" if sh-expr '$# == 0' && [[ -z $_Dbg_EXECUTION_STRING ]] { echo >&2 "$(_Dbg_pname): need to give a script to debug or use the -c option.> !2 "${_Dbg_pname}: need to give a script to debug or use the -c option." exit 1 } setglobal _Dbg_script_file = $1 shift [[ $1 == '--' ]] && shift if [[ ! -d $_Dbg_tmpdir ]] && [[ ! -w $_Dbg_tmpdir ]] { echo "$(_Dbg_pname): cannot write to temp directory $_Dbg_tmpdir." > !2 echo "$(_Dbg_pname): Use -T try directory location." > !2 exit 1 } # Note that this is called via bashdb rather than "bash --debugger" setglobal _Dbg_script = '1' if [[ -n $_Dbg_EXECUTION_STRING ]] { setglobal _Dbg_script_file = $[_Dbg_tempname cmd] echo $_Dbg_EXECUTION_STRING >$_Dbg_script_file } if [[ ! -r "$_Dbg_script_file" ]] { echo "$(_Dbg_pname): cannot read program to debug: $(_Dbg_script_file)." > !2 exit 1 } typeset -r _Dbg_Dbg_script_file=$[_Dbg_expand_filename $_Dbg_script_file] if sh-expr '_Dbg_set_linetrace' { # No stepping. _Dbg_write_journal_eval "_Dbg_step_ignore=-1" setglobal _Dbg_QUIT_ON_QUIT = '1' } else { # Set to skip over statements up to ". $_Dbg_script_file" _Dbg_write_journal_eval "_Dbg_step_ignore=3" } # The set0 can be loaded via commadn/set_sub/dollar0 or perhaps # it as done prior to running bashdb. But if we have set0, use it # to change $0 to the debugged script name rather than "@PACKAGE@". if enable -a set0 !2 >/dev/null { set0 $_Dbg_script_file } sh-expr '_Dbg_set_read_completion' && _Dbg_complete_level_0_init _Dbg_init_default_traps