summaryrefslogtreecommitdiff
path: root/coverage/debug.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-01-18 18:54:41 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-01-18 18:54:41 -0500
commitb0bf6360206d0789ebb4f8110ac5c7133bfdc22b (patch)
tree82ec37dba79f54b441d06f7f804b23cd834875a7 /coverage/debug.py
parente27ab798b8efb4067ed0bafd75627ae724dcfad5 (diff)
downloadpython-coveragepy-b0bf6360206d0789ebb4f8110ac5c7133bfdc22b.tar.gz
Add some control over how many stack frames are shown
Diffstat (limited to 'coverage/debug.py')
-rw-r--r--coverage/debug.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/coverage/debug.py b/coverage/debug.py
index 4076b9b..719e97b 100644
--- a/coverage/debug.py
+++ b/coverage/debug.py
@@ -42,7 +42,7 @@ class DebugControl(object):
msg = "pid %5d: %s" % (os.getpid(), msg)
self.output.write(msg+"\n")
if self.should('callers'):
- dump_stack_frames(self.output)
+ dump_stack_frames(out=self.output)
self.output.flush()
def write_formatted_info(self, header, info):
@@ -80,7 +80,7 @@ def info_formatter(info):
yield "%*s: %s" % (label_len, label, data)
-def short_stack(): # pragma: debugging
+def short_stack(limit=None): # pragma: debugging
"""Return a string summarizing the call stack.
The string is multi-line, with one line per stack frame. Each line shows
@@ -92,13 +92,15 @@ def short_stack(): # pragma: debugging
import_local_file : /Users/ned/coverage/trunk/coverage/backward.py @159
...
+ `limit` is the number of frames to include, defaulting to all of them.
+
"""
- stack = inspect.stack()[:0:-1]
+ stack = inspect.stack()[limit:0:-1]
return "\n".join("%30s : %s @%d" % (t[3], t[1], t[2]) for t in stack)
-def dump_stack_frames(out=None): # pragma: debugging
+def dump_stack_frames(limit=None, out=None): # pragma: debugging
"""Print a summary of the stack to stdout, or some place else."""
out = out or sys.stdout
- out.write(short_stack())
+ out.write(short_stack(limit=limit))
out.write("\n")