From bfe9d87d546e9c0502e6a39e702f433bb505394e Mon Sep 17 00:00:00 2001 From: Andrey Lisin Date: Mon, 2 Sep 2019 16:50:57 +0300 Subject: [PATCH] PY-37212 Show traceback when terminating on uncaught exception GitOrigin-RevId: 0c2772e0449a5ff5be06d1b0398e70abeae56dfd --- python/helpers/pydev/pydevd.py | 7 +++++++ .../com/jetbrains/env/python/PythonDebuggerTest.java | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/python/helpers/pydev/pydevd.py b/python/helpers/pydev/pydevd.py index 913a6acb06ed..a9d9509f1e69 100644 --- a/python/helpers/pydev/pydevd.py +++ b/python/helpers/pydev/pydevd.py @@ -1189,6 +1189,13 @@ class PyDB(object): pydev_log.debug("We are stopping in post-mortem\n") thread_id = get_thread_id(thread) pydevd_vars.add_additional_frame_by_id(thread_id, frames_byid) + exctype, value, tb = arg + while tb: + if self.is_top_level_trace_in_project_scope(tb): + break + tb = tb.tb_next + sys.__excepthook__(exctype, value, tb) + sys.excepthook = lambda type, value, traceback: None # Avoid printing the exception for the second time. try: try: add_exception_to_frame(frame, arg) diff --git a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java index 541834f05419..887494c7b59f 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonDebuggerTest.java @@ -456,6 +456,10 @@ public class PythonDebuggerTest extends PyEnvTestCase { public void testing() throws Exception { waitForPause(); waitForOutput("message=\"python-exceptions.ZeroDivisionError\"", "message=\"python-builtins.ZeroDivisionError\""); + waitForOutput("Traceback (most recent call last):"); + waitForOutput("line 7, in foo"); + waitForOutput("return 1 / x"); + waitForOutput("ZeroDivisionError: "); eval("__exception__[0].__name__").hasValue("'ZeroDivisionError'"); resume(); waitForTerminate();