From 3a48ed94817fb3ec9c204160b606d344d67b1410 Mon Sep 17 00:00:00 2001 From: Skip Montanaro Date: Thu, 25 Jul 2002 16:09:35 +0000 Subject: * runctx - fix a couple typos * globaltrace_lt - handle case where inspect.getmodulename doesn't return anything useful * localtrace_trace - handle case where inspect.getframeinfo doesn't return any context info I think both of the last two are caused by exec'd or eval'd code --- Tools/scripts/trace.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/Tools/scripts/trace.py b/Tools/scripts/trace.py index e75551c..9c4819f 100644 --- a/Tools/scripts/trace.py +++ b/Tools/scripts/trace.py @@ -500,9 +500,9 @@ class Trace: if globals is None: globals = {} if locals is None: locals = {} if not self.donothing: - sys.settrace(gself.lobaltrace) + sys.settrace(self.globaltrace) try: - exec cmd in dict, dict + exec cmd in globals, locals finally: if not self.donothing: sys.settrace(None) @@ -540,16 +540,17 @@ class Trace: # print "%s.globaltrace(frame: %s, why: %s, arg: %s): filename: %s, lineno: %s, funcname: %s, context: %s, lineindex: %s\n" % (self, frame, why, arg, filename, lineno, funcname, context, lineindex,) if filename: modulename = inspect.getmodulename(filename) - ignore_it = self.ignore.names(filename, modulename) - # if DEBUG_MODE and not self.blabbed.has_key((filename, modulename,)): - # self.blabbed[(filename, modulename,)] = None - # print "%s.globaltrace(frame: %s, why: %s, arg: %s, filename: %s, modulename: %s, ignore_it: %s\n" % (self, frame, why, arg, filename, modulename, ignore_it,) - if not ignore_it: - if self.trace: - print " --- modulename: %s, funcname: %s" % (modulename, funcname,) - # if DEBUG_MODE: - # print "%s.globaltrace(frame: %s, why: %s, arg: %s, filename: %s, modulename: %s, ignore_it: %s -- about to localtrace\n" % (self, frame, why, arg, filename, modulename, ignore_it,) - return self.localtrace + if modulename is not None: + ignore_it = self.ignore.names(filename, modulename) + # if DEBUG_MODE and not self.blabbed.has_key((filename, modulename,)): + # self.blabbed[(filename, modulename,)] = None + # print "%s.globaltrace(frame: %s, why: %s, arg: %s, filename: %s, modulename: %s, ignore_it: %s\n" % (self, frame, why, arg, filename, modulename, ignore_it,) + if not ignore_it: + if self.trace: + print " --- modulename: %s, funcname: %s" % (modulename, funcname,) + # if DEBUG_MODE: + # print "%s.globaltrace(frame: %s, why: %s, arg: %s, filename: %s, modulename: %s, ignore_it: %s -- about to localtrace\n" % (self, frame, why, arg, filename, modulename, ignore_it,) + return self.localtrace else: # XXX why no filename? return None @@ -586,11 +587,14 @@ class Trace: if bname is None: # Using setdefault faster than two separate lines? --Zooko 2001-10-14 bname = self.pathtobasename.setdefault(filename, os.path.basename(filename)) - try: - print "%s(%d): %s" % (bname, lineno, context[lineindex],), - except IndexError: - # Uh.. sometimes getframeinfo gives me a context of length 1 and a lineindex of -2. Oh well. - pass + if context is not None: + try: + print "%s(%d): %s" % (bname, lineno, context[lineindex],), + except IndexError: + # Uh.. sometimes getframeinfo gives me a context of length 1 and a lineindex of -2. Oh well. + pass + else: + print "%s(???): ???" % bname return self.localtrace def localtrace_count(self, frame, why, arg): -- cgit v0.12