trepan/options.py
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("--main", dest="main",
                         action="store_true", default=True,
                         help="First stop should be in __main__"
                         )
    optparser.add_option("--no-main", dest="main",
                         action="store_false", default=True,
                         help="First stop should be in __main__"
                         )
    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
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("--main", dest="main",
                         action="store_true", default=True,
                         help="First stop should be in __main__"
                         )
    optparser.add_option("--no-main", dest="main",
                         action="store_false", default=True,
                         help="First stop should be in __main__"
                         )
    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
def process_options ( debugger_name , pkg_version , sys_argv , option_list = None ) : 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 ( "--main" , dest = "main" , action = "store_true" , default = True , help = "First stop should be in __main__" ) optparser . add_option ( "--no-main" , dest = "main" , action = "store_false" , default = True , help = "First stop should be in __main__" ) 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
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.
Handle debugger options . Set option_list if you are writing another main program and want to extend the existing set of debugger options .