]> granicus.if.org Git - python/commitdiff
* runctx - fix a couple typos
authorSkip Montanaro <skip@pobox.com>
Thu, 25 Jul 2002 16:09:35 +0000 (16:09 +0000)
committerSkip Montanaro <skip@pobox.com>
Thu, 25 Jul 2002 16:09:35 +0000 (16:09 +0000)
* 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

index e75551ccab91bb1e4fd4887edb1f869c4b6a0980..9c4819f1a83bc813476b8fb1c4004d9613cee488 100644 (file)
@@ -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):