diff options
Diffstat (limited to 'gdb/python/lib')
-rw-r--r-- | gdb/python/lib/gdb/dap/events.py | 4 | ||||
-rw-r--r-- | gdb/python/lib/gdb/dap/startup.py | 9 |
2 files changed, 8 insertions, 5 deletions
diff --git a/gdb/python/lib/gdb/dap/events.py b/gdb/python/lib/gdb/dap/events.py index 80a259a..2e6fe98 100644 --- a/gdb/python/lib/gdb/dap/events.py +++ b/gdb/python/lib/gdb/dap/events.py @@ -161,7 +161,7 @@ _expected_pause = False @in_gdb_thread -def exec_and_expect_stop(cmd, expected_pause=False): +def exec_and_expect_stop(cmd, expected_pause=False, propagate_exception=False): """A wrapper for exec_and_log that sets the continue-suppression flag. When EXPECTED_PAUSE is True, a stop that looks like a pause (e.g., @@ -174,7 +174,7 @@ def exec_and_expect_stop(cmd, expected_pause=False): # continuing. _suppress_cont = not expected_pause # FIXME if the call fails should we clear _suppress_cont? - exec_and_log(cmd) + exec_and_log(cmd, propagate_exception) # Map from gdb stop reasons to DAP stop reasons. Some of these can't diff --git a/gdb/python/lib/gdb/dap/startup.py b/gdb/python/lib/gdb/dap/startup.py index 58591c0..3952447 100644 --- a/gdb/python/lib/gdb/dap/startup.py +++ b/gdb/python/lib/gdb/dap/startup.py @@ -204,7 +204,7 @@ def log_stack(level=LogLevel.DEFAULT): @in_gdb_thread -def exec_and_log(cmd): +def exec_and_log(cmd, propagate_exception=False): """Execute the gdb command CMD. If logging is enabled, log the command and its output.""" log("+++ " + cmd) @@ -212,5 +212,8 @@ def exec_and_log(cmd): output = gdb.execute(cmd, from_tty=True, to_string=True) if output != "": log(">>> " + output) - except gdb.error: - log_stack() + except gdb.error as e: + if propagate_exception: + raise DAPException(str(e)) from e + else: + log_stack() |