diff options
author | Johan Sternerup <johan.sternerup@gmail.com> | 2024-06-01 18:16:31 +0200 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-06-06 10:25:19 -0600 |
commit | 42dc1b7f621755ab0587be5e313b4b0918738952 (patch) | |
tree | 0b40067880966fc1498d85ab4db8c0c0d17a470b /gdb/python/lib | |
parent | 584dc32c594fa60eba0a3149001e8a844b09f5b9 (diff) | |
download | binutils-42dc1b7f621755ab0587be5e313b4b0918738952.zip binutils-42dc1b7f621755ab0587be5e313b4b0918738952.tar.gz binutils-42dc1b7f621755ab0587be5e313b4b0918738952.tar.bz2 |
DAP: Allow gdb exception in exec_and_log to propagate
This allows a request to specify that any gdb exception raised in
exec_and_log within the gdb thread to be propagated back to the DAP
thread (using the Canceller object as the orchestrator).
Approved-By: Tom Tromey <tom@tromey.com>
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() |