diff options
author | Georg Brandl <georg@python.org> | 2009-05-05 08:54:11 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2009-05-05 08:54:11 (GMT) |
commit | 4d4313d59dc0020fd9cd913e020de88b98f0ba50 (patch) | |
tree | 4a96df4e750f1eb680d694a43d2ff4317bf9de7b /Lib/bdb.py | |
parent | e3869c41f289126df4927a0bca97b3aa118f49d8 (diff) | |
download | cpython-4d4313d59dc0020fd9cd913e020de88b98f0ba50.zip cpython-4d4313d59dc0020fd9cd913e020de88b98f0ba50.tar.gz cpython-4d4313d59dc0020fd9cd913e020de88b98f0ba50.tar.bz2 |
#5142: add module skipping feature to pdb.
Diffstat (limited to 'Lib/bdb.py')
-rw-r--r-- | Lib/bdb.py | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -1,5 +1,6 @@ """Debugger basics""" +import fnmatch import sys import os import types @@ -19,7 +20,8 @@ class Bdb: The standard debugger class (pdb.Pdb) is an example. """ - def __init__(self): + def __init__(self, skip=None): + self.skip = set(skip) if skip else None self.breaks = {} self.fncache = {} @@ -94,9 +96,18 @@ class Bdb: # methods, but they may if they want to redefine the # definition of stopping and breakpoints. + def is_skipped_module(self, module_name): + for pattern in self.skip: + if fnmatch.fnmatch(module_name, pattern): + return True + return False + def stop_here(self, frame): # (CT) stopframe may now also be None, see dispatch_call. # (CT) the former test for None is therefore removed from here. + if self.skip and \ + self.is_skipped_module(frame.f_globals.get('__name__')): + return False if frame is self.stopframe: return frame.f_lineno >= self.stoplineno while frame is not None and frame is not self.stopframe: |