def __init__(self, inp=None, out=None, opts={}): user_opts = DEFAULT_USER_SETTINGS.copy() user_opts.update(opts) from trepan.inout import input as Minput, output as Moutput atexit.register(self.finalize) self.interactive = True # Or at least so we think initially self.input = inp or Minput.DebuggerUserInput() self.output = out or Moutput.DebuggerUserOutput() if self.input.use_history(): self.complete = user_opts['complete'] if self.complete: parse_and_bind("tab: complete") set_completer(self.complete) pass self.histfile = user_opts['histfile'] if self.histfile: try: read_history_file(histfile) except IOError: pass except: # PyPy read_history_file fails return set_history_length(50) atexit.register(write_history_file, self.histfile) pass return
def __init__(self, inp=None, out=None, opts={}): get_option = lambda key: Mmisc.option_set(opts, key, DEFAULT_USER_SETTINGS) from trepan.inout import input as Minput, output as Moutput atexit.register(self.finalize) self.interactive = True # Or at least so we think initially self.input = inp or Minput.DebuggerUserInput() self.output = out or Moutput.DebuggerUserOutput() if self.input.use_history(): self.complete = get_option('complete') if self.complete: parse_and_bind("tab: complete") set_completer(self.complete) pass self.histfile = get_option('histfile') if self.histfile: try: read_history_file(histfile) except IOError: pass except: # PyPy read_history_file may fail return set_history_length(50) atexit.register(write_history_file, self.histfile) pass return
def __init__(self, script_name, out=None, opts=None): get_option = lambda key: Mmisc.option_set(opts, key, self. DEFAULT_INIT_OPTS) atexit.register(self.finalize) self.script_name = script_name self.histfile = None self.input_lineno = 0 self.input = Mscriptin.ScriptInput(script_name) self.interactive = False self.output = out or Moutput.DebuggerUserOutput() self.abort_on_error = get_option("abort_on_error") self.default_confirm = get_option("confirm_val") self.verbose = get_option("verbose") return
def __init__(self, inp=None, out=None, opts=None): atexit.register(self.finalize) self.input = inp or Minput.DebuggerUserInput() self.output = out or Moutput.DebuggerUserOutput() self.pp = pprint.PrettyPrinter() return
def process_options(debugger_name, pkg_version, sys_argv, option_list=None): """Handle debugger options. Set `option_list' if you are writing another main program and want to extend the existing set of debugger options. The options dicionary from optparser is returned. sys_argv is also updated.""" usage_str = """%prog [debugger-options] [python-script [script-options...]] Runs the extended python debugger""" # serverChoices = ('TCP','FIFO', None) optparser = OptionParser(usage=usage_str, option_list=option_list, version="%%prog version %s" % pkg_version) optparser.add_option("-X", "--trace", dest="linetrace", action="store_true", default=False, help="Show lines before executing them." "This option also sets --batch") optparser.add_option("-F", "--fntrace", dest="fntrace", action="store_true", default=False, help=("Show functions before executing them." "This option also sets --batch")) optparser.add_option("--basename", dest="basename", action="store_true", default=False, help=("Filenames strip off basename, " "(e.g. for regression tests)")) # optparser.add_option("--batch", dest="noninteractive", # action="store_true", default=False, # help="Don't run interactive commands shell on "+ # "stops.") optparser.add_option("--client", dest="client", action='store_true', help="Connect to an existing debugger process " "started with the --server option. " "See options for client.") optparser.add_option("-x", "--command", dest="command", action="store", type='string', metavar='FILE', help="Execute commands from FILE.") optparser.add_option("--cd", dest="cd", action="store", type='string', metavar='DIR', help="Change current directory to DIR.") optparser.add_option("--confirm", dest="confirm", action="store_true", default=True, help="Confirm potentially dangerous operations") optparser.add_option("--dbg_trepan", dest="dbg_trepan", action="store_true", default=False, help="Debug the debugger") optparser.add_option("--different", dest="different", action="store_true", default=True, help="Consecutive stops should have " "different positions") # optparser.add_option("--error", dest="errors", metavar='FILE', # action="store", type='string', # help="Write debugger's error output " # + "(stderr) to FILE") optparser.add_option("-e", "--exec", dest="execute", type="string", help="list of debugger commands to " + "execute. Separate the commands with ;;") optparser.add_option("-H", "--host", dest="host", default='127.0.0.1', action="store", type='string', metavar='IP-OR-HOST', help="connect IP or host name. " "Only valid if --client option given.") optparser.add_option("--highlight", dest="highlight", action="store", type='string', metavar='{light|dark|plain}', default='light', help="Use syntax and terminal highlight output. " "'plain' is no highlight") optparser.add_option("--private", dest="private", action='store_true', default=False, help="Don't register this as a global debugger") optparser.add_option("--post-mortem", dest="post_mortem", action='store_true', default=True, help=("Enter debugger on an uncaught (fatal) " "exception")) optparser.add_option("--no-post-mortem", dest="post_mortem", action='store_false', default=True, help=("Don't enter debugger on an uncaught (fatal) " "exception")) optparser.add_option("-n", "--nx", dest="noexecute", action="store_true", default=False, help=("Don't execute commands found in any " "initialization files")) optparser.add_option("-o", "--output", dest="output", metavar='FILE', action="store", type='string', help=("Write debugger's output (stdout) " "to FILE")) optparser.add_option("-P", "--port", dest="port", default=1027, action="store", type='int', help="Use TCP port number NUMBER for " "out-of-process connections.") optparser.add_option("--server", dest="server", action='store_true', help="Out-of-process server connection mode") # optparser.add_option("--style", dest="style", # action="store", type='string', # metavar='*pygments-style*', # default=None, # help=("Pygments style; 'none' " # "uses 8-color rather than 256-color terminal")) optparser.add_option("--sigcheck", dest="sigcheck", action="store_true", default=False, help="Set to watch for signal handler changes") optparser.add_option("-t", "--target", dest="target", help=("Specify a target to connect to. Arguments" " should be of form, 'protocol address'.")), optparser.add_option("--from_ipython", dest='from_ipython', action='store_true', default=False, help="Called from inside ipython") # annotate option produces annotations, used in trepan.el for a # better emacs integration. Annotations are similar in purpose to # those of GDB (see that manual for a description), although the # syntax is different. they have the following format: # # ^Z^Zannotation-name # <arbitrary text> # ^Z^Z # # where ^Z is the ctrl-Z character, and "annotname" is the name of the # annotation. A line with only two ^Z ends the annotation (no nesting # allowed). See trepan.el for the usage optparser.add_option("--annotate", default=0, type="int", help="Use annotations to work inside emacs") # Set up to stop on the first non-option because that's the name # of the script to be debugged on arguments following that are # that scripts options that should be left untouched. We would # not want to interpret and option for the script, e.g. --help, as # one one of our own, e.g. --help. optparser.disable_interspersed_args() sys.argv = list(sys_argv) # FIXME: why does this mess up integration tests? # (opts, sys.argv) = optparser.parse_args(sys_argv) (opts, sys.argv) = optparser.parse_args() dbg_opts = {'from_ipython': opts.from_ipython} # Handle debugger startup command files: --nx (-n) and --command. dbg_initfiles = [] if not opts.noexecute: add_startup_file(dbg_initfiles) # As per gdb, first we execute user initialization files and then # we execute any file specified via --command. if opts.command: dbg_initfiles.append(opts.command) pass dbg_opts['proc_opts'] = {'initfile_list': dbg_initfiles} if opts.cd: os.chdir(opts.cd) pass if opts.output: try: dbg_opts['output'] = Moutput.DebuggerUserOutput(opts.output) except IOError: _, xxx_todo_changeme, _ = sys.exc_info() (errno, strerror) = xxx_todo_changeme.args print("I/O in opening debugger output file %s" % opts.output) print("error(%s): %s" % (errno, strerror)) except: print("Unexpected error in opening debugger output file %s" % opts.output) print(sys.exc_info()[0]) sys.exit(2) pass pass return opts, dbg_opts, sys.argv