diff options
author | Daniel Hahler <github@thequod.de> | 2019-02-15 21:52:53 +0100 |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-02-15 12:52:53 -0800 |
commit | 4327705cfab3eb09073ec828570bbd8f789e1611 (patch) | |
tree | a32e039b8fbfc0536c6ecd6d5fc305957dd81449 /Lib/pdb.py | |
parent | 9abb725cea7a1687b4d85ab9766ae6256a76a1ef (diff) | |
download | cpython-git-4327705cfab3eb09073ec828570bbd8f789e1611.tar.gz |
bpo-35931: Gracefully handle SyntaxError in pdb debug command (GH-11782)
Previously, `debug print(` would cause the interpreter to exit on a SyntaxError whereas `print(` would properly display the error and return to the pdb prompt.
This patch fixes this by pre-compiling the code before passing it to `Pdb.run`.
https://bugs.python.org/issue35931
Diffstat (limited to 'Lib/pdb.py')
-rwxr-xr-x | Lib/pdb.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py index 60bdb7675c..1443f9f85c 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1093,10 +1093,16 @@ class Pdb(bdb.Bdb, cmd.Cmd): sys.settrace(None) globals = self.curframe.f_globals locals = self.curframe_locals + try: + code = compile(arg, "<string>", "exec") + except SyntaxError: + exc_info = sys.exc_info()[:2] + self.error(traceback.format_exception_only(*exc_info)[-1].strip()) + return p = Pdb(self.completekey, self.stdin, self.stdout) p.prompt = "(%s) " % self.prompt.strip() self.message("ENTERING RECURSIVE DEBUGGER") - sys.call_tracing(p.run, (arg, globals, locals)) + sys.call_tracing(p.run, (code, globals, locals)) self.message("LEAVING RECURSIVE DEBUGGER") sys.settrace(self.trace_dispatch) self.lastcmd = p.lastcmd |