(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: [ (C {(typeset)} {(-i)} {(Lit_VarLike "start=") (0)}) (Sentence child:(C {(typeset)} {(-i)} {(end)}) 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 children: [ (C {(_Dbg_not_running)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(3)}) ] op_id: Op_DAmp ) (C {(typeset)} {(-i)} {(Lit_VarLike "count=") (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Name "$_Dbg_stack_size")} ) spids: [184 188] ) } ) (AndOr 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] ) ] op_id: Op_DPipe ) (C {(typeset)} {(-i)} {(Lit_VarLike "frame_start=") (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0)}) spids: [224 228] ) } ) (AndOr 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] ) ] op_id: Op_DPipe ) (C {(typeset)} {(-i)} {(Lit_VarLike "i=") (frame_start)}) (C {(typeset)} {(-li)} {(adjusted_pos)}) (C {(typeset)} {(filename)}) (C {(typeset)} {(-i)} {(adjusted_pos)}) (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: [-1 336] ) ] spids: [-1 398] ) (C {(typeset)} {(-i)} {(skip_fns)}) (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: [ (C {(typeset)} {(-i)} {(Lit_VarLike "arg_count=") (BracedVarSub token: <VSub_Name BASH_ARGC> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$_Dbg_next_argc")})) spids: [516 521] ) } ) (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] ) } ) (C {(typeset)} {(Lit_VarLike "parms=") (SQ )}) (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: [-1 614] ) ] spids: [-1 636] ) ] spids: [-1 585] ) ] spids: [-1 639] ) (C {(typeset)} {(-l)} {(lineno)}) (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: [-1 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)}) ] )