(CommandList children: [ (C {(_Dbg_help_add)} {(handle)} { (DQ ("**handle** *signal* *action*\n") ("\n") ("Specify how to handle *signal*.\n") ("\n") ("*signal* is a signal name like SIGSEGV, but numeric signals like 11\n") ("(which is usually equivalent on ") (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) ("nix systems) is okay too.\n") ("\n") ("*action* is one of ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (stop) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (nostop) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (print) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", and\n") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (noprint) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (". ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Stop) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" indicates entering debugger if this signal\n") ("happens. ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Print) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" indicates printing a message if this signal is\n") ("encountered. ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Stack) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" is like ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (print) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" but except the entire call\n") ("stack is printed. Prefacing these actions with ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (no) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" indicates not to\n") ("do the indicated action.") ) } ) (FuncDef name: _Dbg_do_handle body: (BraceGroup children: [ (C {(typeset)} {(Lit_VarLike "sig=") ($ VSub_Number "$1")}) (C {(typeset)} {(Lit_VarLike "cmd=") ($ VSub_Number "$2")}) (C {(typeset)} {(-i)} {(signum)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name "$sig")})) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Missing signal name or signal number."))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 163] ) ] spids: [-1 178] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$sig")} right: {($ VSub_Name "$int_pat")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:signame) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_signum2name)} {($ VSub_Name "$sig")})] ) left_token: <Left_CommandSub "$("> spids: [199 203] ) } spids: [198] ) ] spids: [198] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_QMark "$?")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Bad signal number: ") ($ VSub_Name "$sig"))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(2)} ) ] spids: [-1 221] ) ] spids: [-1 237] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:signum) op: Equal rhs: {(sig)} spids: [240] ) ] spids: [240] ) ] spids: [-1 195] ) ] else_action: [ (Sentence child:(C {(typeset)} {(signum)}) terminator:<Op_Semi ";">) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:signum) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_name2signum)} {($ VSub_Name "$sig")})] ) left_token: <Left_CommandSub "$("> spids: [254 258] ) } spids: [253] ) ] spids: [253] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_QMark "$?")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} {(DQ ("Bad signal name: ") ($ VSub_Name "$sig"))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(3)} ) ] spids: [-1 276] ) ] spids: [-1 292] ) ] spids: [244 295] ) (Case to_match: {($ VSub_Name "$cmd")} arms: [ (case_arm pat_list: [{(nop)} {(nopr)} {(nopri)} {(noprin)} {(noprint)}] action: [ (C {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <noprint>) } ) (C {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <stop>) } ) ] spids: [306 324 351 -1] ) (case_arm pat_list: [{(nosta)} {(nostac)} {(nostack)}] action: [ (C {(_Dbg_sig_show_stack) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <nostack>) } ) ] spids: [355 365 378 -1] ) (case_arm pat_list: [{(nosto)} {(nostop)}] action: [ (C {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <nostop>) } ) ] spids: [382 388 401 -1] ) (case_arm pat_list: [{(p)} {(pr)} {(pri)} {(prin)} {(print)}] action: [ (C {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <print>) } ) ] spids: [405 423 436 -1] ) (case_arm pat_list: [{(sta)} {(stac)} {(stack)}] action: [ (C {(_Dbg_sig_show_stack) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <showstack>) } ) ] spids: [440 450 463 -1] ) (case_arm pat_list: [{(sto)} {(stop)}] action: [ (C {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <stop>) } ) (C {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") (SQ <print>) } ) ] spids: [467 473 500 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:cmd)) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_errmsg)} { (DQ ( "Need to give a command: stop, nostop, stack, nostack, print, noprint" ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(4)} ) ] spids: [-1 520] ) ] else_action: [ (C {(_Dbg_errmsg)} {(DQ ("Invalid handler command ") ($ VSub_Name "$cmd"))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(5)} ) ] spids: [537 553] ) ] spids: [503 505 556 -1] ) ] spids: [299 303 559] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [129] ) spids: [125 128] ) ] )