(CommandList children: [ (C {(_Dbg_help_add)} {(backtrace)} { (DQ ('**backtrace** [*n*]\n') ('\n') ('Print a backtrace of calling functions and sourced files.\n') ('\n') ('files. If *n* is given, list only *n* calls.\n') ('\n') ('Examples:\n') ('---------\n') ('\n') (' backtrace # Print a full stack trace\n') (' backtrace 2 # Print only the top two entries\n') ) } {(1)} {(_Dbg_complete_backtrace)} ) (FuncDef name: _Dbg_complete_backtrace body: (BraceGroup children: [ (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:start) op:Equal rhs:{(0)} spids:[125])] spids: [121] ) (Sentence child: (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:end) op:Equal spids:[133])] spids: [129] ) terminator: <Op_Semi ';'> ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:end) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:_Dbg_stack_size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (C {(_Dbg_complete_num_range)} {($ VSub_Name '$start')} {($ VSub_Name '$end')}) ] spids: [118] ) spids: [114 117] ) (FuncDef name: _Dbg_do_backtrace body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(_Dbg_not_running)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(3)}) ] ) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Name '$_Dbg_stack_size')} ) spids: [184 188] ) } spids: [183] ) ] spids: [179] ) (AndOr ops: [Op_DPipe] children: [ (C { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_is_int)} {($ VSub_Name '$count')})] ) left_token: <Left_CommandSub '$('> spids: [191 195] ) } ) (BraceGroup children: [ (C {(_Dbg_errmsg)} {(DQ ('Bad integer COUNT parameter: ') ($ VSub_Name '$count'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [199] ) ] ) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:frame_start) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [224 228] ) } spids: [223] ) ] spids: [219] ) (AndOr ops: [Op_DPipe] children: [ (C { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_is_int)} {($ VSub_Name '$frame_start')})] ) left_token: <Left_CommandSub '$('> spids: [232 236] ) } ) (BraceGroup children: [ (C {(_Dbg_errmsg)} {(DQ ('Bad integer parameter: ') ($ VSub_Name '$ignore_count'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [240] ) ] ) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:i) op:Equal rhs:{(frame_start)} spids:[268])] spids: [264] ) (Assignment keyword: Assign_Typeset flags: [-li] pairs: [(assign_pair lhs:(LhsName name:adjusted_pos) op:Equal spids:[276])] spids: [272] ) (Assignment keyword: Assign_Typeset pairs: [(assign_pair lhs:(LhsName name:filename) op:Equal spids:[303])] spids: [301] ) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:adjusted_pos) op:Equal spids:[310])] spids: [306] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:frame_start) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:count)) ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:adjusted_pos) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_frame_adjusted_pos)} {(0)})] ) left_token: <Left_CommandSub '$('> spids: [349 353] ) } spids: [348] ) ] spids: [348] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(_Dbg_file_canonic)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$adjusted_pos')}) ) spids: [361 366] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [357 368] ) } spids: [356] ) ] spids: [356] ) (C {(_Dbg_frame_print)} { (CommandSubPart command_list: (CommandList children:[(C {(_Dbg_frame_prefix)} {(0)})]) left_token: <Left_CommandSub '$('> spids: [373 377] ) } {(SQ <0>)} {(SQ )} {(DQ ($ VSub_Name '$filename'))} {(DQ ($ VSub_Name '$_Dbg_frame_last_lineno'))} {(SQ )} ) ] spids: [16777215 336] ) ] spids: [16777215 398] ) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:skip_fns) op:Equal spids:[406])] spids: [402] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:skip_fns) right: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name FUNCNAME> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [412 418] ) } ) right: (ArithVarRef name:_Dbg_stack_size) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (C {(_Dbg_frame_set_fn_param)} {($ VSub_Name '$skip_fns')}) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:frame_start) right: (ArithWord w:{(Lit_Digits 1)}) ) ) cond: (ArithBinary op_id: Arith_DAmp left: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:_Dbg_stack_size) ) right: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:count) right: (ArithWord w:{(Lit_Digits 0)}) ) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (Assignment keyword: Assign_Typeset flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:arg_count) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$_Dbg_next_argc')}) ) spids: [516 521] ) } spids: [515] ) ] spids: [511] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:adjusted_pos) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_frame_adjusted_pos)} {($ VSub_Name '$i')})] ) left_token: <Left_CommandSub '$('> spids: [525 529] ) } spids: [524] ) ] spids: [524] ) (C {(_Dbg_msg_nocr)} { (CommandSubPart command_list: (CommandList children: [(C {(_Dbg_frame_prefix)} {($ VSub_Name '$i')})] ) left_token: <Left_CommandSub '$('> spids: [534 538] ) ($ VSub_Name '$i') } { (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$adjusted_pos')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [541 548] ) } ) (Assignment keyword: Assign_Typeset pairs: [(assign_pair lhs:(LhsName name:parms) op:Equal rhs:{(SQ )} spids:[554])] spids: [552] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{(Lit_Digits 0)}) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_ARGC> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [572 578] ) } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_frame_fn_param_str)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name FUNCNAME> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w: {($ VSub_Name '$adjusted_pos')} ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [595 602] ) } right: {(DQ (source))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_parm_str) op: Equal rhs: {(EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (CommandSubPart command_list: (CommandList children: [ (C {(_Dbg_file_canonic)} { (DQ (BracedVarSub token: <VSub_Name BASH_ARGV> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { ($ VSub_Name '$_Dbg_next_argv' ) } ) right: (ArithWord w: {(Lit_Digits 1)} ) ) ) spids: [623 630] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [619 632] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) } spids: [617] ) ] spids: [617] ) ] spids: [16777215 614] ) ] spids: [16777215 636] ) ] spids: [16777215 585] ) ] spids: [16777215 639] ) (Assignment keyword: Assign_Typeset flags: [-l] pairs: [(assign_pair lhs:(LhsName name:lineno) op:Equal spids:[647])] spids: [643] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithVarRef name:adjusted_pos) right: (ArithWord w: { (BracedVarSub token: <VSub_Name BASH_SOURCE> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [658 664] ) } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: {(0)} spids: [674] ) ] spids: [674] ) (DParen child: (UnaryAssign op_id: Node_PostDMinus child: (LhsName name:adjusted_pos) ) ) ] spids: [16777215 671] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$adjusted_pos')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [689 696] ) } spids: [688] ) ] spids: [688] ) ] spids: [685 699] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(_Dbg_file_canonic)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$adjusted_pos')}) ) spids: [707 712] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [703 714] ) } spids: [702] ) ] spids: [702] ) (C {(_Dbg_msg)} { (DQ ('(') ($ VSub_Name '$_Dbg_parm_str') (') called from file ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ($ VSub_Name '$filename') ("'") ) } {(DQ ('at line ') ($ VSub_Name '$lineno'))} ) (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:count)) ) ] spids: [508 742] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [165] ) spids: [161 164] ) (C {(_Dbg_alias_add)} {(bt)} {(backtrace)}) (C {(_Dbg_alias_add)} {(T)} {(backtrace)}) (C {(_Dbg_alias_add)} {(where)} {(backtrace)}) ] )