aboutsummaryrefslogtreecommitdiff
path: root/gdb/inf-loop.c
diff options
context:
space:
mode:
authorVladimir Prus <vladimir@codesourcery.com>2008-05-05 09:02:59 +0000
committerVladimir Prus <vladimir@codesourcery.com>2008-05-05 09:02:59 +0000
commitfcfb8b02aa46c3a70ccb1d74e243bcfadbcf2711 (patch)
tree019d1eb01f71d40d638519927ee6fd3f8e929def /gdb/inf-loop.c
parent6766b6945a6f1948c75309cc69ccf9dea9cdc684 (diff)
downloadgdb-fcfb8b02aa46c3a70ccb1d74e243bcfadbcf2711.zip
gdb-fcfb8b02aa46c3a70ccb1d74e243bcfadbcf2711.tar.gz
gdb-fcfb8b02aa46c3a70ccb1d74e243bcfadbcf2711.tar.bz2
* inf-loop.c (inferior_event_handler): Call bpstat_do_action,
and catch all exceptions from it. * top.c (command_line_handler_continuation): Don't call bpstat_do_action here.
Diffstat (limited to 'gdb/inf-loop.c')
-rw-r--r--gdb/inf-loop.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/inf-loop.c b/gdb/inf-loop.c
index 4c61dae..4889c6f 100644
--- a/gdb/inf-loop.c
+++ b/gdb/inf-loop.c
@@ -43,6 +43,7 @@ void
inferior_event_handler (enum inferior_event_type event_type,
gdb_client_data client_data)
{
+ struct gdb_exception e;
int was_sync = 0;
switch (event_type)
{
@@ -91,6 +92,12 @@ inferior_event_handler (enum inferior_event_type event_type,
was_sync = sync_execution;
async_enable_stdin ();
+ /* If there's an error doing breakpoint commands, we don't
+ want to throw -- continuation might still do something. */
+ TRY_CATCH (e, RETURN_MASK_ALL)
+ {
+ bpstat_do_actions (&stop_bpstat);
+ }
/* If we were doing a multi-step (eg: step n, next n), but it
got interrupted by a breakpoint, still do the pending
continuations. The continuation itself is responsible for