Author: Armin Rigo <[email protected]>
Branch: reverse-debugger
Changeset: r86039:9c9a38357bca
Date: 2016-08-05 19:26 +0200
http://bitbucket.org/pypy/pypy/changeset/9c9a38357bca/
Log: Tweaks
diff --git a/pypy/interpreter/reverse_debugging.py
b/pypy/interpreter/reverse_debugging.py
--- a/pypy/interpreter/reverse_debugging.py
+++ b/pypy/interpreter/reverse_debugging.py
@@ -253,13 +253,13 @@
# ____________________________________________________________
-def fetch_cur_frame():
+def fetch_cur_frame(silent=False):
ec = dbstate.space.threadlocals.get_ec()
if ec is None:
frame = None
else:
frame = ec.topframeref()
- if frame is None:
+ if frame is None and not silent:
revdb.send_output("No stack.\n")
return frame
@@ -388,8 +388,9 @@
indent))
revdb.send_linecache(frame.getcode().co_filename, lineno)
-def display_function_part(frame, max_lines_before, max_lines_after,
- prompt="> "):
+def display_function_part(frame, max_lines_before, max_lines_after):
+ if frame is None:
+ return
code = frame.getcode()
if code.co_filename.startswith('<builtin>'):
return
@@ -407,33 +408,33 @@
#
for i in range(first_lineno, final_lineno + 1):
if i == current_lineno:
+ if revdb.current_place() == -2: # <= this is the arg to
stop_point()
+ prompt = "<< " # return
+ elif revdb.current_place() == -1:
+ prompt = "!! " # exceptional return
+ else:
+ prompt = " > " # plain line
revdb.send_output(prompt)
else:
- revdb.send_output(" ")
+ revdb.send_output(" ")
revdb.send_linecache(code.co_filename, i, strip=False)
#
if ellipsis_after:
revdb.send_output("...\n")
def command_backtrace(cmd, extra):
- frame = fetch_cur_frame()
- if frame is None:
- return
+ frame = fetch_cur_frame(silent=True)
if cmd.c_arg1 == 0:
- revdb.send_output("%s:\n" % (
- file_and_lineno(frame, frame.get_last_lineno()),))
- if revdb.current_place() == -2: # <= this is the arg to stop_point()
- prompt = "<<" # return
- elif revdb.current_place() == -1:
- prompt = "!!" # exceptional return
- else:
- prompt = "> " # plain line
- display_function_part(frame, max_lines_before=8, max_lines_after=5,
- prompt=prompt)
+ if frame is not None:
+ revdb.send_output("%s:\n" % (
+ file_and_lineno(frame, frame.get_last_lineno()),))
+ display_function_part(frame, max_lines_before=8, max_lines_after=5)
elif cmd.c_arg1 == 2:
display_function_part(frame,
max_lines_before=1000,max_lines_after=1000)
else:
revdb.send_output("Current call stack (most recent call last):\n")
+ if frame is None:
+ revdb.send_output(" (empty)\n")
frames = []
while frame is not None:
frames.append(frame)
@@ -505,7 +506,7 @@
def command_stackid(cmd, extra):
- frame = fetch_cur_frame()
+ frame = fetch_cur_frame(silent=True)
if frame is not None and cmd.c_arg1 != 0: # parent_flag
frame =
dbstate.space.getexecutioncontext().getnextframe_nohidden(frame)
if frame is None:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit