(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_restore_info) op: Equal rhs: { (DQ (${ VSub_Name _Dbg_tmpdir) (/) (${ VSub_Name _Dbg_debugger_name) (_restore_) ($ VSub_Dollar "$$") ) } spids: [58] ) ] spids: [58] ) (C {(_Dbg_help_add)} {(shell)} { (DQ ("**shell** [*options*]\n") ("\n") ("Options:\n") ("--------\n") ("\n") (" --no-fns | -F : don't copy in function definitions from parent shell\n") (" --no-vars | -V : don't copy in variable definitions\n") (" --shell SHELL_NAME\n") (" --posix : corresponding shell option\n") (" --login | l : corresponding shell option\n") (" --noprofile : corresponding shell option\n") (" --norc : corresponding shell option\n") ("\n") ("Enter a nested shell, not a subshell. Before entering the shell\n") ("current variable definitions and function definitions are stored in\n") ("profile ") ($ VSub_Name "$_Dbg_shell_temp_profile") (". which is is read in via the\n") ("**--init-file** option.\n") ("\n") ("If you don't want variable definitions to be set, use option **-V** or\n") ("**--no-vars**. If you don't want function definitions to be set, use\n") ("option **-F** or **--no-fns**. There are several corresponding shell\n") ("options. Many of these by nature defeate reading on saved functions\n") ("and variables.\n") ("\n") ("The shell that used is taken from the shell used to build the debugger\n") ("which is: ") ($ VSub_Name "$_Dbg_shell_name") (". Use **--shell** to a different compatible shell.\n") ("\n") ("By default, variables set or changed in the shell do not persist after\n") ("the shell is left to to back to the debugger or debugged program.\n") ("\n") ("However you can tag variables to persist by running the function\n") ("'save_vars' which takes a list of variable names. You can run this\n") ("as many times as you want with as many variable names as you want.\n") ("\n") ("For example:\n") (" save_vars PROFILE PARSER\n") ("marks variable PROFILE and PARSER to be examined and their values used\n") ("in the trap EXIT of the shell.\n") ) } ) (FuncDef name: _Dbg_parse_shell_cmd_options body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTLIND) op:Equal rhs:{(SQ )} spids:[130])] spids: [130] ) (While cond: [ (C {(getopts_long)} {(lFV)} {(opt)} {(no-fns)} {(0)} {(posix)} {(no_argument)} {(login)} {(no_argument)} {(shell)} {(required_argument)} {(norc)} {(no_argument)} {(no-vars)} {(0)} {(SQ )} {($ VSub_At "$@")} ) ] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name "$opt"))} arms: [ (case_arm pat_list: [{(F)} {(no-fns)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_o_fns) op: Equal rhs: {(0)} spids: [208] ) ] spids: [208] ) ] spids: [199 205 210 -1] ) (case_arm pat_list: [{(V)} {(no-vars)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_o_vars) op: Equal rhs: {(0)} spids: [222] ) ] spids: [222] ) ] spids: [213 219 224 -1] ) (case_arm pat_list: [{(shell)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:shell) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [232] ) ] spids: [232] ) ] spids: [227 229 234 -1] ) (case_arm pat_list: [ {(norc)} {(posix)} {(restricted)} {(login)} {(l)} {(noediting)} {(noprofile)} ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_shell_opts) op: PlusEqual rhs: {(DQ (--) ($ VSub_Name "$opt"))} spids: [266] ) ] spids: [266] ) ] spids: [237 263 273 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [276 278 286 -1] ) ] spids: [190 196 289] ) ] spids: [187 292] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [127] ) spids: [123 126] ) (FuncDef name: _Dbg_do_shell body: (BraceGroup children: [ (Sentence child: (C {(typeset)} {(-i)} {(_Dbg_o_fns)}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_fns) op:Equal rhs:{(1)} spids:[317])] spids: [317] ) (Sentence child: (C {(typeset)} {(-i)} {(_Dbg_o_vars)}) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:_Dbg_o_vars) op:Equal rhs:{(1)} spids:[328])] spids: [328] ) (C {(typeset)} {(Lit_VarLike "_Dbg_shell_opts=") (SQ )}) (C {(typeset)} {(Lit_VarLike "shell=") ($ VSub_Name "$_Dbg_shell")}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(_Dbg_parse_shell_cmd_options)} {($ VSub_At "$@")}) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_QMark "$?")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DAmp ) ] spids: [-1 358] ) ] spids: [-1 382] ) (C {(typeset)} {(-i)} {(_Dbg_rc)}) (C {(_Dbg_shell_new_shell_profile)} {($ VSub_Name "$_Dbg_o_vars")} {($ VSub_Name "$_Dbg_o_fns")} ) (SimpleCommand words: [ {(echo)} {(DQ ("PS1='") (${ VSub_Name _Dbg_debugger_name) (" ") (Lit_Other "$") (" '"))} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name "$_Dbg_shell_temp_profile")} spids: [417] ) ] ) (C {($ VSub_Name "$shell")} {(--init-file)} {($ VSub_Name "$_Dbg_shell_temp_profile")} {($ VSub_Name "$_Dbg_shell_opts")} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:rc) op: Equal rhs: {($ VSub_QMark "$?")} spids: [431] ) ] spids: [431] ) (C {(_Dbg_restore_from_nested_shell)}) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{(Lit_Digits 1)}) right: (ArithVarRef name:_Dbg_running) ) ) (C {(_Dbg_print_location_and_command)}) ] op_id: Op_DAmp ) ] spids: [307] ) spids: [303 306] ) (C {(_Dbg_alias_add)} {(sh)} {(shell)}) ] )