(command.CommandList children: [ (C {(typeset)} {(Lit_VarLike '_Dbg_RESTART_COMMAND=') (SQ )}) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_set_debug=') (0)}) (C {(typeset)} {(Lit_VarLike '_Dbg_stop_reason=') (SQ )}) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_restore_debug_trap=') (1)}) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_inside_skip=') (0)}) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_continue_rc=') (-1)}) (command.ShFunction name: _Dbg_debug_trap_handler body: (command.BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_debugged_exit_code=') ($ VSub_QMark '$?')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts) op: Equal rhs: {($ VSub_Hyphen '$-')} ) ] ) (command.Simple words: [{(shopt)} {(nullglob)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_old_set_nullglob=') ($ VSub_QMark '$?')}) (C {(shopt)} {(-u)} {(nullglob)}) (C {(shopt)} {(-s)} {(extdebug)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Unary op_id: Arith_Bang child: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_set_debug>) ) ) (C {(KW_Set set)} {(Lit_Other '+') (x)} {(Lit_Other '+') (v)} {(Lit_Other '+') (u)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (braced_var_sub token: <VSub_Name FUNCNAME> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } right: {(_Dbg_) (Lit_Other '*')} ) ) (command.DParen child: (arith_expr.Unary op_id: Arith_Bang child: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_set_debug>) ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_set_to_return_from_debugger)} {(0)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) (C {(_Dbg_set_debugger_entry)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_continue_rc) op: Equal rhs: {(_Dbg_inside_skip)} ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_bash_command) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (C {(shift)}) (C {(_Dbg_save_args)} {(DQ ($ VSub_At '$@'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_Great left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_step_ignore>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDMinus child: (sh_lhs_expr.Name name:_Dbg_step_ignore) ) ) (C {(_Dbg_write_journal)} {(DQ ('_Dbg_step_ignore=') ($ VSub_DollarName '$_Dbg_step_ignore'))} ) ] ) ] ) (C {(typeset)} {(-i)} {(_Dbg_i)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:_Dbg_i) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_i>) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_watch_max>) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:_Dbg_i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_LBracket '[')} {(-n)} { (DQ (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_i')} ) ) ) ) } {(Lit_RBracket ']')} ) (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobNEqual left: { (braced_var_sub token: <VSub_Name _Dbg_watch_enable> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_i> ) ) ) } right: {(0)} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(typeset)} {(Lit_VarLike 'new_val=') (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(_Dbg_get_watch_exp_eval)} {($ VSub_DollarName '$_Dbg_i')}) ] ) ) } ) (C {(typeset)} {(Lit_VarLike 'old_val=') (braced_var_sub token: <VSub_Name _Dbg_watch_val> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_i')}) ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobNEqual left: {($ VSub_DollarName '$old_val')} right: {($ VSub_DollarName '$new_val')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.IndexedName name: _Dbg_watch_count index: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_i> ) ) ) ) (C {(_Dbg_msg)} { (DQ ('Watchpoint ') ($ VSub_DollarName '$_Dbg_i') (': ') (braced_var_sub token: <VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_i')} ) ) ) (' changed:') ) } ) (C {(_Dbg_msg)} {(DQ (" old value: '") ($ VSub_DollarName '$old_val') ("'"))} ) (C {(_Dbg_msg)} {(DQ (" new value: '") ($ VSub_DollarName '$new_val') ("'"))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_watch_val index: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_i')} ) ) op: Equal rhs: {($ VSub_DollarName '$new_val')} ) ] ) (C {(_Dbg_hook_enter_debugger)} {(SQ <'on a watch trigger'>)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ] ) ] ) ] ) ] ) ) (C {(typeset)} {(full_filename)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:full_filename) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(_Dbg_is_file)} {(DQ ($ VSub_DollarName '$_Dbg_frame_last_filename'))}) ] ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_r child: {($ VSub_DollarName '$full_filename')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_file2canonic index: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_frame_last_filename')} ) ) op: Equal rhs: {(DQ ($ VSub_DollarName '$full_filename'))} ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_Great left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_action_count>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_Dbg_hook_action_hit)} {(DQ ($ VSub_DollarName '$full_filename'))})] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_Great left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_brkpt_count>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(_Dbg_hook_breakpoint_hit)} {(DQ ($ VSub_DollarName '$full_filename'))} ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_step_force> ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(typeset)} {(Lit_VarLike '_Dbg_frame_previous_file=') (DQ ($ VSub_DollarName '$_Dbg_frame_last_filename')) } ) (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_frame_previous_lineno=') (DQ ($ VSub_DollarName '$_Dbg_frame_last_lineno')) } ) ] ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_counts index: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_num> ) ) ) ) (C {(_Dbg_write_journal)} { (DQ ('_Dbg_brkpt_counts[') ($ VSub_DollarName '$_Dbg_brkpt_num') (']=') (braced_var_sub token: <VSub_Name _Dbg_brkpt_counts> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_num> ) ) ) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_onetime> ) right: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_num> ) ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_stop_reason) op: Equal rhs: {(SQ <'at a breakpoint that has since been deleted'>)} ) ] ) (C {(_Dbg_delete_brkpt_entry)} {($ VSub_DollarName '$_Dbg_brkpt_num')} ) ] ) ] else_action: [ (C {(_Dbg_msg)} { (DQ ('Breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_num') (' hit (') (braced_var_sub token: <VSub_Name _Dbg_brkpt_counts> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_num> ) ) ) (' times).') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_stop_reason) op: Equal rhs: { (DQ ('at breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_num')) } ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_commands_end> ) right: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_brkpt_num')} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_bp_commands)} {($ VSub_DollarName '$_Dbg_brkpt_num')}) ] ) ] ) (C {(_Dbg_hook_enter_debugger)} {(DQ ($ VSub_DollarName '$_Dbg_stop_reason'))} ) (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_step_ignore>) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_step_force>) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_last_lineno> ) right: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_frame_last_lineno> ) ) ) (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$_Dbg_last_source_file')} right: {($ VSub_DollarName '$_Dbg_frame_last_filename')} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ] ) ] ) ] ) (C {(_Dbg_hook_enter_debugger)} {(SQ <'after being stepped'>)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_return_level>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_return_level) op: Equal rhs: {(0)} ) ] ) (C {(_Dbg_hook_enter_debugger)} {(SQ <'on a return'>)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Unary op_id: Node_UnaryMinus child: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_return_level>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_hook_enter_debugger)} {(SQ <'on fielding signal'>)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_set_linetrace>) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_set_linetrace_delay> ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(sleep)} {($ VSub_DollarName '$_Dbg_linetrace_delay')})] ) ] ) (C {(_Dbg_print_linetrace)}) (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_last_lineno) op: Equal rhs: { (braced_var_sub token: <VSub_Name BASH_LINENO> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ] ) (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ) (command.ShFunction name: _Dbg_hook_action_hit body: (command.BraceGroup children: [ (C {(typeset)} {(Lit_VarLike 'full_filename=') (DQ ($ VSub_Number '$1'))}) (C {(typeset)} {(Lit_VarLike 'lineno=') ($ VSub_DollarName '$_Dbg_frame_last_lineno')}) (C {(typeset)} {(-a)} {(linenos)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_z child: {($ VSub_DollarName '$full_filename')} ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(eval)} { (DQ ('linenos=(') (braced_var_sub token: <VSub_Name _Dbg_action_file2linenos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$full_filename')}) ) ) (')') ) } ) (C {(typeset)} {(-a)} {(action_nos)}) (C {(eval)} { (DQ ('action_nos=(') (braced_var_sub token: <VSub_Name _Dbg_action_file2action> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$full_filename')}) ) ) (')') ) } ) (C {(typeset)} {(-i)} {(_Dbg_i)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:_Dbg_i) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_i>) right: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name linenos> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (sh_lhs_expr.Name name:_Dbg_i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike linenos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_i>) ) right: (arith_expr.VarRef token:<Lit_ArithVarLike lineno>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:_Dbg_action_num) right: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike action_nos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_i>) ) ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stmt) op: Equal rhs: { (DQ (braced_var_sub token: <VSub_Name _Dbg_action_stmt> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$_Dbg_action_num')} ) ) ) ) } ) ] ) (C {(.)} {(${ VSub_Name _Dbg_libdir) (/dbg-set-d-vars.inc)}) (C {(eval)} {(DQ ($ VSub_DollarName '$stmt'))}) (C {(_Dbg_set_debugger_internal)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) ] ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) ) (command.ShFunction name: _Dbg_hook_breakpoint_hit body: (command.BraceGroup children: [ (C {(typeset)} {(Lit_VarLike 'full_filename=') (DQ ($ VSub_Number '$1'))}) (C {(typeset)} {(Lit_VarLike 'lineno=') ($ VSub_DollarName '$_Dbg_frame_last_lineno')}) (C {(typeset)} {(-a)} {(linenos)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_z child: {($ VSub_DollarName '$full_filename')} ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_z child: { (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$full_filename')}) ) ) } ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (C {(eval)} { (DQ ('linenos=(') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$full_filename')}) ) ) (')') ) } ) (C {(typeset)} {(-a)} {(brkpt_nos)}) (C {(eval)} { (DQ ('brkpt_nos=(') (braced_var_sub token: <VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$full_filename')}) ) ) (')') ) } ) (C {(typeset)} {(-i)} {(i)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:i) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) cond: (arith_expr.Binary op_id: Arith_Less left: (arith_expr.VarRef token:<Lit_ArithVarLike i>) right: (arith_expr.ArithWord w: { (braced_var_sub token: <VSub_Name linenos> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) } ) ) update: (arith_expr.UnaryAssign op_id:Node_PostDPlus child:(sh_lhs_expr.Name name:i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_DEqual left: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike linenos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) right: (arith_expr.VarRef token:<Lit_ArithVarLike lineno>) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.DParen child: (arith_expr.BinaryAssign op_id: Arith_Equal left: (sh_lhs_expr.Name name:_Dbg_brkpt_num) right: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token:<Lit_ArithVarLike brkpt_nos>) right: (arith_expr.VarRef token:<Lit_ArithVarLike i>) ) ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Arith_LBracket left: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_enable> ) right: (arith_expr.VarRef token: <Lit_ArithVarLike _Dbg_brkpt_num> ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) ] ) ] ) ] ) ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) ) (command.ShFunction name: _Dbg_hook_enter_debugger body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_stop_reason) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobNEqual left: {(SQ <noprint>)} right: {($ VSub_Number '$2')} ) ) (C {(_Dbg_print_location_and_command)}) ] ) (C {(_Dbg_process_commands)}) (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$_Dbg_continue_rc')} ) ] ) ) (command.ShFunction name: _Dbg_cleanup body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_f child: {($ VSub_DollarName '$_Dbg_evalfile')} ) ) (command.Simple words: [{(rm)} {(-f)} {($ VSub_DollarName '$_Dbg_evalfile')}] redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) ] ) (C {(KW_Set set)} {(Lit_Other '+') (u)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_n child: {($ VSub_DollarName '$_Dbg_EXECUTION_STRING')} ) ) (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_r child: {($ VSub_DollarName '$_Dbg_script_file')} ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {($ VSub_DollarName '$_Dbg_script_file')})] ) ] ) (C {(_Dbg_erase_journals)}) (C {(_Dbg_restore_user_vars)}) ] ) ) (command.ShFunction name: _Dbg_cleanup2 body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Unary op_id: BoolUnary_f child: {($ VSub_DollarName '$_Dbg_evalfile')} ) ) (command.Simple words: [{(rm)} {(-f)} {($ VSub_DollarName '$_Dbg_evalfile')}] redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) ] ) (C {(_Dbg_erase_journals)}) (C {(trap)} {(-)} {(EXIT)}) ] ) ) ] )