(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_restore_info) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _Dbg_tmpdir) <'/'> (${ Id.VSub_Name _Dbg_debugger_name) <_restore_> ($ Id.VSub_Dollar '$$') ) } 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 '> ($ Id.VSub_DollarName '$_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: '> ($ Id.VSub_DollarName '$_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'> ) } ) (command.ShFunction name: _Dbg_parse_shell_cmd_options body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTLIND) op: assign_op.Equal rhs: {(SQ )} spids: [130] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<getopts_long>} {<lFV>} {<opt>} {<no-fns>} {<0>} {<posix>} {<no_argument>} {<login>} {<no_argument>} {<shell>} {<required_argument>} {<norc>} {<no_argument>} {<no-vars>} {<0>} {(SQ )} {($ Id.VSub_At '$@')} ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$opt'))} arms: [ (case_arm pat_list: [{<F>} {<no-fns>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_o_fns) op: assign_op.Equal rhs: {<0>} spids: [208] ) ] ) ] spids: [199 205 210 -1] ) (case_arm pat_list: [{<V>} {<no-vars>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_o_vars) op: assign_op.Equal rhs: {<0>} spids: [222] ) ] ) ] spids: [213 219 224 -1] ) (case_arm pat_list: [{<shell>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shell) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OPTARG')} spids: [232] ) ] ) ] spids: [227 229 234 -1] ) (case_arm pat_list: [ {<norc>} {<posix>} {<restricted>} {<login>} {<l>} {<noediting>} {<noprofile>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_shell_opts) op: assign_op.PlusEqual rhs: {(DQ <--> ($ Id.VSub_DollarName '$opt'))} spids: [266] ) ] ) ] spids: [237 263 273 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [276 278 286 -1] ) ] ) ] ) ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) ) (command.ShFunction name: _Dbg_do_shell body: (BraceGroup children: [ (command.Sentence child: (C {<typeset>} {<-i>} {<_Dbg_o_fns>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_o_fns) op: assign_op.Equal rhs: {<1>} spids: [317] ) ] ) (command.Sentence child: (C {<typeset>} {<-i>} {<_Dbg_o_vars>}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_Dbg_o_vars) op: assign_op.Equal rhs: {<1>} spids: [328] ) ] ) (C {<typeset>} {<Id.Lit_VarLike '_Dbg_shell_opts='> (SQ )}) (C {<typeset>} {<Id.Lit_VarLike 'shell='> ($ Id.VSub_DollarName '$_Dbg_shell')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '$#')} right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_Dbg_parse_shell_cmd_options>} {($ Id.VSub_At '$@')}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '$?')} right: {<Id.Lit_Digits 0>} ) ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] ) ] spids: [346 358] ) ] ) (C {<typeset>} {<-i>} {<_Dbg_rc>}) (C {<_Dbg_shell_new_shell_profile>} {($ Id.VSub_DollarName '$_Dbg_o_vars')} {($ Id.VSub_DollarName '$_Dbg_o_fns')} ) (command.Simple words: [ {<echo>} { (DQ <'PS1=\''> (${ Id.VSub_Name _Dbg_debugger_name) <' '> <Id.Lit_Dollar '$'> <' \''>) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$_Dbg_shell_temp_profile')} ) ] do_fork: T ) (C {($ Id.VSub_DollarName '$shell')} {<--init-file>} {($ Id.VSub_DollarName '$_Dbg_shell_temp_profile')} {($ Id.VSub_DollarName '$_Dbg_shell_opts')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [431] ) ] ) (C {<_Dbg_restore_from_nested_shell>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {<Id.Lit_Digits 1>} right: <Id.Lit_ArithVarLike _Dbg_running> ) ) (C {<_Dbg_print_location_and_command>}) ] ) ] ) ) (C {<_Dbg_alias_add>} {<sh>} {<shell>}) ] )