From eddac53ff60c579eff28134bde84783fe36d6214 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Fri, 15 Apr 2011 10:44:32 -0700 Subject: trace: reimplement the DTRACE function so it doesn't use a vector At the same time, rename the trace flags to debug flags since they have broader usage than simply tracing. This means that --trace-flags is now --debug-flags and --trace-help is now --debug-help --- src/python/m5/debug.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/python/m5/main.py | 31 +++++++++++-------------- src/python/m5/trace.py | 16 +------------ 3 files changed, 76 insertions(+), 33 deletions(-) (limited to 'src/python/m5') diff --git a/src/python/m5/debug.py b/src/python/m5/debug.py index cd40b8fa3..8231126a0 100644 --- a/src/python/m5/debug.py +++ b/src/python/m5/debug.py @@ -29,3 +29,65 @@ import internal from internal.debug import schedBreakCycle, setRemoteGDBPort + +def help(): + print "Base Flags:" + for flag in flags.basic: + print " %s: %s" % (flag, flags.descriptions[flag]) + print + print "Compound Flags:" + for flag in flags.compound: + if flag == 'All': + continue + print " %s: %s" % (flag, flags.descriptions[flag]) + util.printList(flags.compoundMap[flag], indent=8) + print + +class AllFlags(object): + def __init__(self): + self._version = -1 + self._dict = {} + + def _update(self): + current_version = internal.debug.getAllFlagsVersion() + if self._version == current_version: + return + + self._dict.clear() + for flag in internal.debug.getAllFlags(): + self._dict[flag.name()] = flag + self._version = current_version + + def __contains__(self, item): + self._update() + return item in self._dict + + def __getitem__(self, item): + self._update() + return self._dict[item] + + def keys(self): + self._update() + return self._dict.keys() + + def values(self): + self._update() + return self._dict.values() + + def items(self): + self._update() + return self._dict.items() + + def iterkeys(self): + self._update() + return self._dict.iterkeys() + + def itervalues(self): + self._update() + return self._dict.itervalues() + + def iteritems(self): + self._update() + return self._dict.iteritems() + +flags = AllFlags() diff --git a/src/python/m5/main.py b/src/python/m5/main.py index f932ec63a..adf42fc96 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -98,15 +98,15 @@ add_option("--dump-config", metavar="FILE", default="config.ini", set_group("Debugging Options") add_option("--debug-break", metavar="TIME[,TIME]", action='append', split=',', help="Cycle to create a breakpoint") +add_option("--debug-help", action='store_true', + help="Print help on debug flags") +add_option("--debug-flags", metavar="FLAG[,FLAG]", action='append', split=',', + help="Sets the flags for debugging (-FLAG disables a flag)") add_option("--remote-gdb-port", type='int', default=7000, help="Remote gdb base port (set to 0 to disable listening)") # Tracing options set_group("Trace Options") -add_option("--trace-help", action='store_true', - help="Print help on trace flags") -add_option("--trace-flags", metavar="FLAG[,FLAG]", action='append', split=',', - help="Sets the flags for tracing (-FLAG disables a flag)") add_option("--trace-start", metavar="TIME", type='int', help="Start tracing at TIME (must be in ticks)") add_option("--trace-file", metavar="FILE", default="cout", @@ -214,10 +214,10 @@ def main(): print info.README print - if options.trace_help: + if options.debug_help: done = True check_tracing() - trace.help() + debug.help() if options.list_sim_objects: import SimObject @@ -284,30 +284,25 @@ def main(): for when in options.debug_break: debug.schedBreakCycle(int(when)) - if options.trace_flags: + if options.debug_flags: check_tracing() on_flags = [] off_flags = [] - for flag in options.trace_flags: + for flag in options.debug_flags: off = False if flag.startswith('-'): flag = flag[1:] off = True - if flag not in trace.flags.all and flag != "All": - print >>sys.stderr, "invalid trace flag '%s'" % flag + + if flag not in debug.flags: + print >>sys.stderr, "invalid debug flag '%s'" % flag sys.exit(1) if off: - off_flags.append(flag) + debug.flags[flag].disable() else: - on_flags.append(flag) - - for flag in on_flags: - trace.set(flag) - - for flag in off_flags: - trace.clear(flag) + debug.flags[flag].enable() if options.trace_start: check_tracing() diff --git a/src/python/m5/trace.py b/src/python/m5/trace.py index db239040a..f34444810 100644 --- a/src/python/m5/trace.py +++ b/src/python/m5/trace.py @@ -27,26 +27,12 @@ # Authors: Nathan Binkert import internal -import traceflags as flags import util -from internal.trace import clear, output, set, ignore +from internal.trace import output, ignore def disable(): internal.trace.cvar.enabled = False def enable(): internal.trace.cvar.enabled = True - -def help(): - print "Base Flags:" - for flag in flags.basic: - print " %s: %s" % (flag, flags.descriptions[flag]) - print - print "Compound Flags:" - for flag in flags.compound: - if flag == 'All': - continue - print " %s: %s" % (flag, flags.descriptions[flag]) - util.printList(flags.compoundMap[flag], indent=8) - print -- cgit v1.2.3