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
commita604ad1459fdc3a32462fbd67053be53767a143a (patch)
treef0b0f0365eca41e4a8d4380f42f8c99e16aaa70a /coverage/debug.py
parent9b484ffa3f480889f6478d34d84987beddc08ba6 (diff)
downloadpython-coveragepy-git-a604ad1459fdc3a32462fbd67053be53767a143a.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 4076b9b2..719e97bb 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")