(command.CommandList children: [ (C {<typeset>} {<-a>} {<_Dbg_keep>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_keep) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <keep>)} {(SQ <del>)}])} spids: [71] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_line>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_line) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [107] ) ] ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_brkpt_count='> <0>}) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_file>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [133] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_enable>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_enable) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [148] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_counts>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_counts) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [163] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_onetime>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_onetime) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [178] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_cond>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_cond) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [193] ) ] ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_brkpt_max='> <0>}) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-A>} {<_Dbg_brkpt_file2linenos>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2linenos) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [222] ) ] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {<typeset>} {<-A>} {<_Dbg_brkpt_file2brkpt>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2brkpt) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _>)} spids: [237] ) ] ) ] ) (C {<typeset>} {<-a>} {<Id.Lit_VarLike '_Dbg_watch_exp='> (sh_array_literal left:<Id.Op_LParen _>)}) (C {<typeset>} {<-a>} {<Id.Lit_VarLike '_Dbg_watch_val='> (sh_array_literal left:<Id.Op_LParen _>)}) (C {<typeset>} {<-ai>} {<Id.Lit_VarLike '_Dbg_watch_arith='> (sh_array_literal left:<Id.Op_LParen _>)} ) (C {<typeset>} {<-ai>} {<Id.Lit_VarLike '_Dbg_watch_count='> (sh_array_literal left:<Id.Op_LParen _>)} ) (C {<typeset>} {<-ai>} {<Id.Lit_VarLike '_Dbg_watch_enable='> (sh_array_literal left:<Id.Op_LParen _>)} ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_watch_max='> <0>}) (C {<typeset>} {<Id.Lit_VarLike '_Dbg_watch_pat='> (DQ (${ Id.VSub_Name int_pat) <'[wW]'>)}) (command.ShFunction name: _Dbg_save_breakpoints body: (BraceGroup children: [ (C {<typeset>} {<file>}) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_line>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_cond>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_count>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_enable>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_onetime>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_max>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file2linenos>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file2brkpt>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) ] ) ) (command.ShFunction name: _Dbg_save_watchpoints body: (BraceGroup children: [ (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_exp>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_val>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_arith>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_count>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_enable>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) (command.Simple words: [{<typeset>} {<-p>} {<_Dbg_watch_max>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_statefile')} ) ] do_fork: T ) ] ) ) (command.ShFunction name: _Dbg_enable_disable body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} { (DQ <'_Dbg_enable_disable error - need at least 2 args, got '> ($ Id.VSub_Pound '$#') ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [543 556] ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <display>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<shift>}) (C {<typeset>} {<Id.Lit_VarLike 'to_go='> (DQ ($ Id.VSub_At '$@'))}) (C {<typeset>} {<i>}) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName '$int_pat')}] action: [ (C {<_Dbg_enable_disable_display>} {($ Id.VSub_DollarName '$on')} {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')} ) ] spids: [658 660 672 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<_Dbg_errmsg>} { (DQ <'Invalid entry number skipped: '> ($ Id.VSub_DollarName '$i') ) } ) ] spids: [675 677 -1 688] ) ] ) ] ) ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [596 612] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {(SQ <action>)} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<shift>}) (C {<typeset>} {<Id.Lit_VarLike 'to_go='> (DQ ($ Id.VSub_At '$@'))}) (C {<typeset>} {<i>}) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName '$int_pat')}] action: [ (C {<_Dbg_enable_disable_action>} {($ Id.VSub_DollarName '$on')} {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')} ) ] spids: [768 770 782 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<_Dbg_errmsg>} { (DQ <'Invalid entry number skipped: '> ($ Id.VSub_DollarName '$i') ) } ) ] spids: [785 787 -1 798] ) ] ) ] ) ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [706 722] ) ] ) (command.Sentence child:(C {<typeset>} {<to_go>}) terminator:<Id.Op_Semi _>) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:to_go) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '$@'))} spids: [825] ) ] ) (C {<typeset>} {<i>}) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))}) (command.ForEach iter_name: i iter_words: [{($ Id.VSub_DollarName '$to_go')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{($ Id.VSub_DollarName '$_Dbg_watch_pat')}] action: [ (C {<_Dbg_enable_disable_watch>} {($ Id.VSub_DollarName '$on')} {($ Id.VSub_DollarName '$en_dis')} { (braced_var_sub token: <Id.VSub_Name del> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: (arith_expr.Binary op_id: Id.Arith_Minus left: { (braced_var_sub token: <Id.VSub_Name del> prefix_op: (Id.VSub_Pound) ) } right: {<Id.Lit_Digits 1>} ) ) ) } ) ] spids: [863 865 888 -1] ) (case_arm pat_list: [{($ Id.VSub_DollarName '$int_pat')}] action: [ (C {<_Dbg_enable_disable_brkpt>} {($ Id.VSub_DollarName '$on')} {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')} ) ] spids: [891 893 905 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<_Dbg_errmsg>} {(DQ <'Invalid entry number skipped: '> ($ Id.VSub_DollarName '$i'))} ) ] spids: [908 910 -1 921] ) ] ) ] ) ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_print_brkpt_count body: (BraceGroup children: [ (command.Sentence child: (C {<typeset>} {<-i>} {<i>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [964] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike _Dbg_brkpt_counts> right: <Id.Lit_ArithVarLike i> ) right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike _Dbg_brkpt_counts> right: <Id.Lit_ArithVarLike i> ) right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_printf>} {(DQ <Id.Lit_BadBackslash '\\'> <'tbreakpoint already hit 1 time'>)} ) ] spids: [989 1007] ) ] else_action: [ (C {<_Dbg_printf>} {(DQ <Id.Lit_BadBackslash '\\'> <'tbreakpoint already hit %d times'>)} { (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_counts> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) } ) ] ) ] spids: [968 986] ) ] ) ] ) ) (command.ShFunction name: _Dbg_clear_all_brkpt body: (BraceGroup children: [ (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_file2linenos=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_file2brkpt=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_line=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_cond=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_file=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_enable=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_counts=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_onetime=()'>)}) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_brkpt_count=0'>)}) ] ) ) (command.ShFunction name: _Dbg_set_brkpt body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 3>} ) right: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 4>} ) ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<source_file>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:source_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_Number '$1'))}) ) } spids: [1165] ) ] ) (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'lineno='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'is_temp='> ($ Id.VSub_Number '$3')}) (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'condition='> (braced_var_sub token: <Id.VSub_Number 4> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<1>}) ) } ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike _Dbg_brkpt_max> ) ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike _Dbg_brkpt_count> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_line index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$lineno')} spids: [1223] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$source_file'))} spids: [1231] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_cond index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$condition'))} spids: [1241] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_onetime index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$is_temp')} spids: [1251] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_counts index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {<0>} spids: [1259] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_enable index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')} ) op: assign_op.Equal rhs: {<1>} spids: [1267] ) ] ) (C {<typeset>} {<dq_source_file>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dq_source_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_esc_dq>} {(DQ ($ Id.VSub_DollarName '$source_file'))}) ) } spids: [1281] ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'dq_condition='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_esc_dq>} {(DQ ($ Id.VSub_DollarName '$condition'))}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <' -o functrace'>)} spids: [1308] ) ] ) (C {<_Dbg_write_journal_eval>} {(DQ <'_Dbg_old_set_opts=\''> ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <'\''>)} ) (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_line['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> ($ Id.VSub_DollarName '$lineno') ) } ) (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_file['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$dq_source_file') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) (C {<_Dbg_write_journal>} { (DQ <'_Dbg_brkpt_cond['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$dq_condition') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) (C {<_Dbg_write_journal>} { (DQ <'_Dbg_brkpt_onetime['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> ($ Id.VSub_DollarName '$is_temp') ) } ) (C {<_Dbg_write_journal>} { (DQ <'_Dbg_brkpt_counts['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <0> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) (C {<_Dbg_write_journal>} {(DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']=1'>)} ) (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_file2linenos['> ($ Id.VSub_DollarName '$source_file') <']+='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> ($ Id.VSub_DollarName '$lineno') <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_file2brkpt['> ($ Id.VSub_DollarName '$source_file') <']+='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:source_file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName '$source_file'))}) ) } spids: [1428] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike is_temp> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_msg>} { (DQ <'Breakpoint '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <' set in file '> (${ Id.VSub_Name source_file) <', line '> ($ Id.VSub_DollarName '$lineno') <.> ) } ) ] spids: [1438 1453] ) ] else_action: [ (C {<_Dbg_msg>} { (DQ <'One-time breakpoint '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <' set in file '> (${ Id.VSub_Name source_file) <', line '> ($ Id.VSub_DollarName '$lineno') <.> ) } ) ] ) (C {<_Dbg_write_journal>} {(DQ <'_Dbg_brkpt_max='> ($ Id.VSub_DollarName '$_Dbg_brkpt_max'))} ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_unset_brkpt_arrays body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'del='> ($ Id.VSub_Number '$1')}) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_line['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_counts['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_file['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_cond['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_brkpt_onetime['> ($ Id.VSub_DollarName '$del') <']'>)} ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: <Id.Lit_ArithVarLike _Dbg_brkpt_count> ) ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_unset_brkpt body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 2>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'filename='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'lineno='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'found='> <0>}) (C {<typeset>} {<fullname>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullname) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_DollarName '$filename'))}) ) } spids: [1676] ) ] ) (C {<typeset>} {<-a>} {<linenos>}) (C {<eval>} { (DQ <'linenos=('> (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')}) ) <')'> ) } ) (C {<typeset>} {<-a>} {<brkpt_nos>}) (C {<eval>} { (DQ <'brkpt_nos=('> (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')}) ) <')'> ) } ) (C {<typeset>} {<-i>} {<i>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: <Id.Lit_ArithVarLike i> right: { (braced_var_sub token: <Id.VSub_Name linenos> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike linenos> right: <Id.Lit_ArithVarLike i> ) right: <Id.Lit_ArithVarLike lineno> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<typeset>} {<-i>} {<brkpt_num>}) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike brkpt_num> right: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike brkpt_nos> right: <Id.Lit_ArithVarLike i> ) ) ) (C {<_Dbg_unset_brkpt_arrays>} {($ Id.VSub_DollarName '$brkpt_num')}) (C {<unset>} {<Id.Lit_ArrayLhsOpen 'linenos['> <i> <Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file2linenos index: {($ Id.VSub_DollarName '$fullname')} ) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name linenos> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } spids: [1834] ) ] ) (C {<typeset>} {<-a>} {<brkpt_nos>}) (C {<eval>} { (DQ <'brkpt_nos=('> (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$filename')} ) ) <')'> ) } ) (C {<unset>} {<Id.Lit_ArrayLhsOpen 'brkpt_nos['> ($ Id.VSub_DollarName '$i') <Id.Lit_RBracket ']'> } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName name: _Dbg_brkpt_file2brkpt index: {($ Id.VSub_DollarName '$filename')} ) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name brkpt_nos> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } spids: [1875] ) ] ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike found> ) ) ] spids: [1775 1793] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike found> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<_Dbg_file_canonic>} {(DQ ($ Id.VSub_DollarName '$filename'))}) ) } spids: [1922] ) ] ) (C {<_Dbg_errmsg>} { (DQ <'No breakpoint found at '> ($ Id.VSub_DollarName '$filename') <', line '> (${ Id.VSub_Name lineno) <.> ) } ) ] spids: [1904 1919] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$found')} ) ] ) ) (command.ShFunction name: _Dbg_delete_brkpt_entry body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'del='> (DQ ($ Id.VSub_Number '$1'))}) (C {<typeset>} {<-i>} {<i>}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'found='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$del')} ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(DQ <'No breakpoint number '> ($ Id.VSub_DollarName '$del') <.>)} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [2012 2029] ) ] ) (C {<typeset>} {<Id.Lit_VarLike 'source_file='> (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$del')}) ) } ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'lineno='> (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_line> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$del')}) ) } ) (C {<typeset>} {<-i>} {<try>}) (C {<typeset>} {<Id.Lit_VarLike 'new_lineno_val='> (SQ )}) (C {<typeset>} {<Id.Lit_VarLike 'new_brkpt_nos='> (SQ )}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> <-1>}) (C {<typeset>} {<-a>} {<brkpt_nos>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:brkpt_nos) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file2brkpt> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$source_file')} ) ) } ] ) } spids: [2109] ) ] ) (command.ForEach iter_name: try iter_words: [ { (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file2linenos> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$source_file')}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike brkpt_nos> right: <Id.Lit_ArithVarLike i> ) right: <Id.Lit_ArithVarLike del> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: <Id.Lit_ArithVarLike try> right: <Id.Lit_ArithVarLike lineno> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} {(SQ <'internal brkpt structure inconsistency'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [2166 2181] ) ] ) (C {<_Dbg_unset_brkpt_arrays>} {($ Id.VSub_DollarName '$del')}) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike found> ) ) ] spids: [2145 2163] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_lineno_val) op: assign_op.PlusEqual rhs: {(DQ <' '> ($ Id.VSub_DollarName '$try') <' '>)} spids: [2214] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_brkpt_nos) op: assign_op.PlusEqual rhs: { (DQ <' '> (braced_var_sub token: <Id.VSub_Name brkpt_nos> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) <' '> ) } spids: [2222] ) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: <Id.Lit_ArithVarLike found> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub token: <Id.VSub_Name new_lineno_val> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_write_journal_eval>} { (DQ <'unset \'_Dbg_brkpt_file2linenos['> ($ Id.VSub_DollarName '$source_file') <']\''> ) } ) (C {<_Dbg_write_journal_eval>} { (DQ <'unset \'_Dbg_brkpt_file2brkpt['> ($ Id.VSub_DollarName '$source_file') <']\''> ) } ) ] spids: [2259 2280] ) ] else_action: [ (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_file2linenos['> ($ Id.VSub_DollarName '$source_file') <']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name new_lineno_val) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ) } ) (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_file2brkpt['> ($ Id.VSub_DollarName '$source_file') <']='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ($ Id.VSub_DollarName '$new_brkpt_nos') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2241 2256] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: _Dbg_enable_disable_action body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 3>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name _Dbg_action_enable> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {($ Id.VSub_DollarName '$on')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} { (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> (${ Id.VSub_Name en_dis) <', so nothing done.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [2426 2445] ) ] else_action: [ (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$i') <']='> ($ Id.VSub_DollarName '$on') ) } ) (C {<_Dbg_msg>} { (DQ <'Action entry '> ($ Id.VSub_DollarName '$i') <' '> ($ Id.VSub_DollarName '$en_dis') <.> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [2404 2423] ) ] else_action: [ (C {<_Dbg_errmsg>} { (DQ <'Action entry '> ($ Id.VSub_DollarName '$i') <' doesn\'t exist, so nothing done.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) ) (command.ShFunction name: _Dbg_enable_disable_brkpt body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 3>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_file> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name _Dbg_brkpt_enable> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {($ Id.VSub_DollarName '$on')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_errmsg>} { (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> (${ Id.VSub_Name en_dis) <', so nothing done.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [2590 2609] ) ] else_action: [ (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$i') <']='> ($ Id.VSub_DollarName '$on') ) } ) (C {<_Dbg_msg>} { (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' '> ($ Id.VSub_DollarName '$en_dis') <.> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) ] spids: [2568 2587] ) ] else_action: [ (C {<_Dbg_errmsg>} { (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' doesn\'t exist, so nothing done.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) ] ) ) (command.ShFunction name: _Dbg_get_watch_exp_eval body: (BraceGroup children: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<new_val>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval>} {<echo>} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) } ) ) } right: {(DQ )} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_val) op: assign_op.Equal rhs: {(SQ )} spids: [2739] ) ] ) ] spids: [2709 2736] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_LBracket left: <Id.Lit_ArithVarLike _Dbg_watch_arith> right: {($ Id.VSub_DollarName '$i')} ) right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<.>} {(${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>}) (C {<eval>} {<let>} {<Id.Lit_VarLike 'new_val='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) } ) ] spids: [2744 2762] ) ] else_action: [ (C {<.>} {(${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>}) (C {<eval>} {<Id.Lit_VarLike 'new_val='> (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')}) ) ) } ) ] ) (C {<echo>} {($ Id.VSub_DollarName '$new_val')}) ] ) ) (command.ShFunction name: _Dbg_enable_disable_watch body: (BraceGroup children: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (braced_var_sub token: <Id.VSub_Name _Dbg_watch_enable> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } right: {($ Id.VSub_DollarName '$on')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_msg>} { (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> ($ Id.VSub_DollarName '$en_dis') <' so nothing done.'> ) } ) ] spids: [2876 2895] ) ] else_action: [ (C {<_Dbg_write_journal_eval>} { (DQ <'_Dbg_watch_enable['> ($ Id.VSub_DollarName '$i') <']='> ($ Id.VSub_DollarName '$on') ) } ) (C {<_Dbg_msg>} { (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') <' '> ($ Id.VSub_DollarName '$en_dis') <.> ) } ) ] ) ] spids: [2854 2873] ) ] else_action: [ (C {<_Dbg_msg>} { (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') <' doesn\'t exist so nothing done.'> ) } ) ] ) ] ) ) (command.ShFunction name: _Dbg_list_watch body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<typeset>} {<Id.Lit_VarLike 'i='> <0>} {<j>}) (C {<_Dbg_section>} {(DQ <'Num Type Enb Expression'>)}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike i> right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: <Id.Lit_ArithVarLike i> right: <Id.Lit_ArithVarLike _Dbg_watch_max> ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike i> ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_printf>} {(SQ <'%-3d watchpoint %-4s %s'>)} {($ Id.VSub_DollarName '$i')} { (braced_var_sub token: <Id.VSub_Name _Dbg_yn> bracket_op: (bracket_op.ArrayIndex expr: { (braced_var_sub token: <Id.VSub_Name _Dbg_watch_enable> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) ) } { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) ) } ) (C {<_Dbg_print_brkpt_count>} { (braced_var_sub token: <Id.VSub_Name _Dbg_watch_count> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$i')} ) ) } ) ] spids: [3031 3049] ) ] ) ] ) ) ] spids: [2960 2980] ) ] else_action: [(C {<_Dbg_msg>} {(DQ <'No watch expressions have been set.'>)})] ) ] ) ) (command.ShFunction name: _Dbg_delete_watch_entry body: (BraceGroup children: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'del='> ($ Id.VSub_Number '$1')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name _Dbg_watch_exp> bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName '$del')} ) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_watch_exp['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_watch_val['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_watch_enable['> ($ Id.VSub_DollarName '$del') <']'>)} ) (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_watch_count['> ($ Id.VSub_DollarName '$del') <']'>)} ) ] spids: [3133 3152] ) ] else_action: [ (C {<_Dbg_msg>} { (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$del') <' doesn\'t exist so nothing done.'> ) } ) ] ) ] ) ) (command.ShFunction name: _Dbg_clear_watch body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<typeset>} {<Id.Lit_VarLike '_Dbg_prompt_output='> (braced_var_sub token: <Id.VSub_Name _Dbg_tty> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<Id.Lit_Slash '/'> <dev> <Id.Lit_Slash '/'> <null>} ) ) } ) (command.Simple words: [ {<read>} {($ Id.VSub_DollarName '$_Dbg_edit')} {<-p>} {(DQ <'Delete all watchpoints? (y/n): '>)} ] redirects: [ (redir op: <Id.Redir_LessAnd '<&'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName '$_Dbg_input_desc')} ) (redir op: <Id.Redir_DGreat '2>>'> loc: (redir_loc.Fd fd:2) arg: {($ Id.VSub_DollarName '$_Dbg_prompt_output')} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName '$REPLY')} right: {<Id.Lit_Other '['> <Yy> <Id.Lit_Other ']'> <Id.Lit_Other '*'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_write_journal_eval>} {<unset>} {<Id.Lit_ArrayLhsOpen '_Dbg_watch_exp['> <Id.Lit_At '@'> <Id.Lit_RBracket ']'> } ) (C {<_Dbg_write_journal_eval>} {<unset>} {<Id.Lit_ArrayLhsOpen '_Dbg_watch_val['> <Id.Lit_At '@'> <Id.Lit_RBracket ']'> } ) (C {<_Dbg_write_journal_eval>} {<unset>} {<Id.Lit_ArrayLhsOpen '_Dbg_watch_enable['> <Id.Lit_At '@'> <Id.Lit_RBracket ']'> } ) (C {<_Dbg_write_journal_eval>} {<unset>} {<Id.Lit_ArrayLhsOpen '_Dbg_watch_count['> <Id.Lit_At '@'> <Id.Lit_RBracket ']'> } ) (C {<_Dbg_msg>} {(DQ <'All Watchpoints have been cleared'>)}) ] spids: [3266 3283] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3215 3230] ) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number '$1')} right: {($ Id.VSub_DollarName '$int_pat')} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_write_journal_eval>} {(DQ <'unset _Dbg_watch_exp['> ($ Id.VSub_Number '$1') <']'>)} ) (C {<_msg>} {(DQ <'Watchpoint '> ($ Id.VSub_DollarName '$i') <' has been cleared'>)}) ] spids: [3348 3361] ) ] else_action: [ (C {<_Dbg_list_watch>}) (C {<_basdhb_msg>} {(DQ <'Please specify a numeric watchpoint number'>)}) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))}) ] ) ) ] )