(CommandList children: [ (C {(typeset)} {(_Dbg_old_setopts)}) (C {(typeset)} {(Lit_VarLike "_Dbg_old_EXIT_handler=") (SQ )}) (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_QUIT_ON_QUIT=") (0)}) (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_program_exit_code=") (0)}) (Sentence child:(C {(typeset)} {(-a)} {(_Dbg_sig_print)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_sig_print) op: Equal rhs: {(ArrayLiteralPart)} spids: [125] ) ] spids: [125] ) (Sentence child:(C {(typeset)} {(-a)} {(_Dbg_sig_stop)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_sig_stop) op: Equal rhs: {(ArrayLiteralPart)} spids: [143] ) ] spids: [143] ) (Sentence child:(C {(typeset)} {(-a)} {(_Dbg_sig_show_stack)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_sig_show_stack) op: Equal rhs: {(ArrayLiteralPart)} spids: [161] ) ] spids: [161] ) (Sentence child:(C {(typeset)} {(-a)} {(_Dbg_sig_passthrough)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_sig_passthrough) op: Equal rhs: {(ArrayLiteralPart)} spids: [179] ) ] spids: [179] ) (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_return_level=") (0)}) (Sentence child:(C {(typeset)} {(-a)} {(_Dbg_arg)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_arg) op:Equal rhs:{(ArrayLiteralPart)} spids:[208])] spids: [208] ) (FuncDef name: _Dbg_save_handler body: (BraceGroup children: [ (C {(typeset)} {(-r)} {(Lit_VarLike "sig=") ($ VSub_Number "$1")}) (C {(typeset)} {(Lit_VarLike "old_handler=") (SQ )}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old_handler_test) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(trap)} {(-p)} {($ VSub_Name "$sig")})] ) left_token: <Left_CommandSub "$("> spids: [239 245] ) } spids: [238] ) ] spids: [238] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name "$old_handler")}) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(typeset)} {(-a)} {(old_hand_a)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old_hand_a) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$old_handler")}])} spids: [270] ) ] spids: [270] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:old_handler) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(_Dbg_subst_handler_var)} { (BracedVarSub token: <VSub_Name old_hand_a> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)})) spids: [280 285] ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [277 286] ) } spids: [276] ) ] spids: [276] ) (C {(typeset)} {(-r)} {(Lit_VarLike "decl_cmd=") (DQ ("typeset -r _Dbg_old_") (${ VSub_Name sig) ("_handler='") ($ VSub_Name "$old_handler") ("'") ) } ) (C {(eval)} {($ VSub_Name "$decl_cmd")}) ] spids: [-1 260] ) ] spids: [-1 310] ) ] spids: [220] ) spids: [216 219] ) (FuncDef name: _Dbg_subst_handler_var body: (BraceGroup children: [ (C {(typeset)} {(-i)} {(i)}) (C {(typeset)} {(Lit_VarLike "result=") (SQ )}) (ForEach iter_name: arg iter_words: [{($ VSub_Star "$*")}] do_arg_iter: False body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$arg")} arms: [ (case_arm pat_list: [{(SQ <"$LINENO">)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg) op: Equal rhs: {(SQ <"${BASH_LINENO[0]}">)} spids: [372] ) ] spids: [372] ) ] spids: [366 369 378 -1] ) (case_arm pat_list: [{(SQ <"${BASH_SOURCE[0]}">)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg) op: Equal rhs: {(SQ <"${BASH_SOURCE[1]}">)} spids: [388] ) ] spids: [388] ) ] spids: [382 385 394 -1] ) (case_arm pat_list: [{(SQ <"${FUNCNAME[0]}">)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg) op: Equal rhs: {(SQ <"${FUNCNAME[1]}">)} spids: [404] ) ] spids: [404] ) ] spids: [398 401 410 -1] ) (case_arm pat_list: [{(SQ <"${BASH_LINENO[0]}">)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg) op: Equal rhs: {(SQ <"${BASH_LINENO[1]}">)} spids: [420] ) ] spids: [420] ) ] spids: [414 417 426 -1] ) ] spids: [358 362 429] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$result")} right: {(SQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: {($ VSub_Name "$arg")} spids: [450] ) ] spids: [450] ) ] spids: [-1 447] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: {(DQ ($ VSub_Name "$result") (" ") ($ VSub_Name "$arg"))} spids: [457] ) ] spids: [457] ) ] spids: [454 465] ) ] spids: [355 468] ) spids: [350 353] ) (C {(echo)} {($ VSub_Name "$result")}) ] spids: [328] ) spids: [324 327] ) (FuncDef name: _Dbg_exit_handler body: (BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_debugged_exit_code=") ($ VSub_QMark "$?")}) (C {(set)} {(Lit_Other "+") (x)} {(Lit_Other "+") (v)} {(Lit_Other "+") (u)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_print> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [530 535] ) } right: {(DQ (print))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_msg)} {(DQ ("Program received signal EXIT (0)..."))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_show_stack> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [565 570] ) } right: {(DQ (showstack))} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(_Dbg_do_backtrace)} {(0)})] spids: [-1 582] ) ] spids: [-1 590] ) ] spids: [-1 547] ) ] spids: [-1 593] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$_Dbg_old_EXIT_handler")} right: {(SQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(eval)} {($ VSub_Name "$_Dbg_old_EXIT_handler")})] spids: [-1 612] ) ] spids: [-1 620] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_stop> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [641 646] ) } right: {(DQ (stop))} ) ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithVarRef name:_Dbg_QUIT_LEVELS) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (DParen child: (ArithVarRef name:_Dbg_QUIT_ON_QUIT) ) ] op_id: Op_DPipe ) ] op_id: Op_DPipe ) terminator: <Op_Semi ";"> ) ] action: [(C {(_Dbg_do_quit)})] spids: [-1 684] ) ] spids: [-1 694] ) (C {(typeset)} {(Lit_VarLike "term_msg=") (DQ (normally))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$_Dbg_debugged_exit_code")} right: {(0)} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:term_msg) op: Equal rhs: {(DQ ("with code ") ($ VSub_Name "$_Dbg_debugged_exit_code"))} spids: [732] ) ] spids: [732] ) ] spids: [-1 729] ) ] spids: [-1 739] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:BASH_SUBSHELL) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_msg)} { (DQ ("Debugged program terminated ") ($ VSub_Name "$term_msg") (". Use q to quit or R to restart.") ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_running) op: Equal rhs: {(0)} spids: [781] ) ] spids: [781] ) (While cond: [(Sentence child:(C {(Lit_Other ":")}) terminator:<Op_Semi ";">)] body: (DoGroup children:[(C {(_Dbg_process_commands)})] spids:[791797]) ) ] spids: [-1 766] ) ] spids: [-1 800] ) ] spids: [488] ) spids: [484 487] ) (FuncDef name: _Dbg_sig_handler body: (BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_debugged_exit_code=") ($ VSub_QMark "$?")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_old_set_opts) op: Equal rhs: {($ VSub_Hyphen "$-")} spids: [842] ) ] spids: [842] ) (AndOr children: [ (DParen child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:_Dbg_set_debug)) ) (C {(set)} {(Lit_Other "+") (x)} {(Lit_Other "+") (v)} {(Lit_Other "+") (u)}) ] op_id: Op_DAmp ) (C {(shopt)} {(-s)} {(extdebug)}) (C {(typeset)} {(-r)} {(-i)} {(Lit_VarLike "_Dbg_signum=") ($ VSub_Number "$1")}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_print> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name "$_Dbg_signum")}) ) spids: [904 909] ) } right: {(DQ (print))} ) ) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_stop> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name "$_Dbg_signum")}) ) spids: [925 930] ) } right: {(DQ (stop))} ) ) ] op_id: Op_DPipe ) terminator: <Op_Semi ";"> ) ] action: [ (C {(typeset)} {(-r)} {(Lit_VarLike "name=") (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_signum2name)} {($ VSub_Name "$_Dbg_signum")})] ) left_token: <Left_CommandSub "$("> spids: [950 954] ) } ) (C {(_Dbg_msg)} { (DQ ("Program received signal ") ($ VSub_Name "$name") (" (") ($ VSub_Name "$_Dbg_signum") (")...") ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_show_stack> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name "$_Dbg_signum")}) ) spids: [976 981] ) } right: {(DQ (showstack))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_stack_pos) op: Equal rhs: {(0)} spids: [996] ) ] spids: [996] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:_Dbg_stack_size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1005 1011] ) } ) ) ) (C {(_Dbg_do_backtrace)}) ] spids: [-1 993] ) ] spids: [-1 1019] ) ] spids: [-1 942] ) ] spids: [-1 1022] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name _Dbg_sig_stop> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name "$_Dbg_signum")}) ) spids: [1029 1034] ) } right: {(DQ (stop))} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(shift)}) (C {(_Dbg_save_args)} {(DQ ($ VSub_At "$@"))}) (C {(_Dbg_set_debugger_entry)}) (C {(_Dbg_hook_enter_debugger)} {(SQ <"on receiving a signal">)} {(SQ <noprint>)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name "$_Dbg_continue_rc")} ) ] spids: [-1 1046] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_LBracket left: (ArithVarRef name:_Dbg_sig_old_handler) right: (ArithVarRef name:_Dbg_signum) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(eval)} { (BracedVarSub token: <VSub_Name _Dbg_sig_old_handler> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$_Dbg_signum")})) spids: [1113 1118] ) } ) ] spids: [1094 1108] ) ] spids: [-1 1121] ) (C {(_Dbg_set_to_return_from_debugger)} {(1)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name "$_Dbg_debugged_exit_code")} ) ] spids: [822] ) spids: [818 821] ) (FuncDef name: _Dbg_err_handler body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name "$_Dbg_old_ERR_handler")} right: {(SQ )} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(eval)} {($ VSub_Name "$_Dbg_old_ERR_handler")})] spids: [-1 1158] ) ] spids: [-1 1166] ) (C {(_Dbg_msg)} { (DQ ("Error occured at ") (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1173 1178] ) (":") (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1180 1185] ) ) } ) (C {(_Dbg_process_commands)}) ] spids: [1140] ) spids: [1136 1139] ) (FuncDef name: _Dbg_signum2name body: (BraceGroup children: [ (Sentence child: (C {(typeset)} {(-i)} {(-r)} {(Lit_VarLike "signum=") ($ VSub_Number "$1")}) terminator: <Op_Semi ";"> ) (SimpleCommand words: [{(builtin)} {(kill)} {(-l)} {($ VSub_Name "$signum")}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1226])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark "$?")}) ] spids: [1204] ) spids: [1200 1203] ) (FuncDef name: _Dbg_name2signum body: (BraceGroup children: [ (Sentence child: (C {(typeset)} {(-r)} {(Lit_VarLike "signame=") ($ VSub_Number "$1")}) terminator: <Op_Semi ";"> ) (SimpleCommand words: [{(builtin)} {(kill)} {(-l)} {($ VSub_Name "$signame")}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1267])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark "$?")}) ] spids: [1247] ) spids: [1243 1246] ) (FuncDef name: _Dbg_subexit_handler body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [1297 1302] ) } right: {(_Dbg_) (Lit_Other "*")} ) ) (DParen child: (ArithUnary op_id: Arith_Bang child: (ArithVarRef name:_Dbg_set_debug) ) ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 1322] ) ] spids: [-1 1330] ) (C {(_Dbg_source_journal)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:_Dbg_QUIT_LEVELS) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(_Dbg_do_quit)} {($ VSub_Name "$_Dbg_debugged_exit_code")})] spids: [-1 1351] ) ] spids: [-1 1359] ) ] spids: [1282] ) spids: [1278 1281] ) (FuncDef name: _Dbg_init_trap body: (BraceGroup children: [ (C {(typeset)} {(-r)} {(Lit_VarLike "name=") ($ VSub_Number "$1")}) (C {(typeset)} {(-i)} {(-r)} {(Lit_VarLike "signum=") (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_name2signum)} {($ VSub_Name "$name")})] ) left_token: <Left_CommandSub "$("> spids: [1392 1396] ) } ) (Sentence child: (C {(_Dbg_sig_print) (Lit_Other "[") ($ VSub_Name "$signum") (Lit_Other "]") (Lit_Other "=") ($ VSub_Number "$2") } ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(_Dbg_sig_show_stack) (Lit_Other "[") ($ VSub_Name "$signum") (Lit_Other "]") (Lit_Other "=") ($ VSub_Number "$3") } ) terminator: <Op_Semi ";"> ) (Sentence child: (C {(_Dbg_sig_stop) (Lit_Other "[") ($ VSub_Name "$signum") (Lit_Other "]") (Lit_Other "=") ($ VSub_Number "$4") } ) terminator: <Op_Semi ";"> ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:signum) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(trap)} {(SQ <"_Dbg_exit_handler \"$BASH_COMMAND\"">)} {(EXIT)})] spids: [-1 1463] ) ] else_action: [ (C {(typeset)} {(Lit_VarLike "trap_cmd=") (DQ ("trap '_Dbg_sig_handler ") ($ VSub_Name "$signum") (" ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (BASH_COMMAND) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("@") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ("' ") ($ VSub_Name "$name") ) } ) (C {(eval)} {($ VSub_Name "$trap_cmd")}) ] spids: [1475 1504] ) ] spids: [1374] ) spids: [1370 1373] ) (FuncDef name: _Dbg_init_default_traps body: (BraceGroup children: [ (C {(_Dbg_init_trap)} {(EXIT)} {(DQ (noprint))} {(DQ (nostack))} {(DQ (stop))}) (C {(_Dbg_init_trap)} {(ILL)} {(DQ (print))} {(DQ (showstack))} {(DQ (stop))}) (C {(_Dbg_init_trap)} {(INT)} {(DQ (print))} {(DQ (showstack))} {(DQ (stop))}) (C {(_Dbg_init_trap)} {(QUIT)} {(DQ (print))} {(DQ (showstack))} {(DQ (stop))}) (C {(_Dbg_init_trap)} {(TERM)} {(DQ (print))} {(DQ (showstack))} {(DQ (stop))}) (C {(_Dbg_init_trap)} {(TRAP)} {(DQ (print))} {(DQ (showstack))} {(DQ (stop))}) ] spids: [1513] ) spids: [1509 1512] ) ] )