summaryrefslogtreecommitdiff
path: root/Lib/pdb.py
diff options
context:
space:
mode:
authorDaniel Hahler <github@thequod.de>2019-03-12 04:29:04 +0100
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-03-11 20:29:04 -0700
commit3e936431e23b424b1e4665e8165c245924f0ab02 (patch)
treee06867ae81a11929c45b8dd40dde1cded3eb7fc7 /Lib/pdb.py
parent1ceb3a3d172dcf0ddff38d5d6b559443ad065b84 (diff)
downloadcpython-git-3e936431e23b424b1e4665e8165c245924f0ab02.tar.gz
bpo-35931: Gracefully handle any exception in pdb debug command (GH-12103)
This is relevant for `debug doesnotexist()`, which would crash with a NameError otherwise.
Diffstat (limited to 'Lib/pdb.py')
-rwxr-xr-xLib/pdb.py12
1 files changed, 5 insertions, 7 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 1443f9f85c..bf3219af39 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -1093,16 +1093,14 @@ 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, (code, globals, locals))
+ try:
+ sys.call_tracing(p.run, (arg, globals, locals))
+ except Exception:
+ exc_info = sys.exc_info()[:2]
+ self.error(traceback.format_exception_only(*exc_info)[-1].strip())
self.message("LEAVING RECURSIVE DEBUGGER")
sys.settrace(self.trace_dispatch)
self.lastcmd = p.lastcmd