aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2008-08-13 13:58:45 +0000
committerPedro Alves <palves@redhat.com>2008-08-13 13:58:45 +0000
commit33e5cbd66db39a4b0c93a515f7387ac435160049 (patch)
tree1090799ad208e0bf820fcb22edca4c0e3f644e61 /gdb/breakpoint.c
parent8fbde58b702f0e1273c8292d1359e474fd96126b (diff)
downloadgdb-33e5cbd66db39a4b0c93a515f7387ac435160049.zip
gdb-33e5cbd66db39a4b0c93a515f7387ac435160049.tar.gz
gdb-33e5cbd66db39a4b0c93a515f7387ac435160049.tar.bz2
gdb/
* breakpoint.c (always_inserted_auto, always_inserted_on) (always_inserted_off, always_inserted_enums): New. (always_inserted_mode): Change type to char* and point to always_inserted_auto. (show_always_inserted_mode): In auto mode, also show the current effect of the option. (breakpoints_always_inserted_mode): Adjust for the new auto mode. (_initialize_breakpoint): Make the "set breakpoints always-inserted" command an enum command. Extend help to describe the auto mode. gdb/doc/ * gdb.texinfo (breakpoint always-inserted) Describe the auto mode setting, and make it the default. (Non-Stop Mode): Remove "set breakpoints always-inserted 1" from non-stop script example.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c60
1 files changed, 41 insertions, 19 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 2a10d61..9bd8c6d 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -249,18 +249,41 @@ Automatic usage of hardware breakpoints is %s.\n"),
value);
}
-/* If 1, gdb will keep breakpoints inserted even as inferior is stopped,
- and immediately insert any new breakpoints. If 0, gdb will insert
- breakpoints into inferior only when resuming it, and will remove
- breakpoints upon stop. */
-static int always_inserted_mode = 0;
-static void
+/* If on, gdb will keep breakpoints inserted even as inferior is
+ stopped, and immediately insert any new breakpoints. If off, gdb
+ will insert breakpoints into inferior only when resuming it, and
+ will remove breakpoints upon stop. If auto, GDB will behave as ON
+ if in non-stop mode, and as OFF if all-stop mode.*/
+
+static const char always_inserted_auto[] = "auto";
+static const char always_inserted_on[] = "on";
+static const char always_inserted_off[] = "off";
+static const char *always_inserted_enums[] = {
+ always_inserted_auto,
+ always_inserted_off,
+ always_inserted_on,
+ NULL
+};
+static const char *always_inserted_mode = always_inserted_auto;
+static void
show_always_inserted_mode (struct ui_file *file, int from_tty,
- struct cmd_list_element *c, const char *value)
+ struct cmd_list_element *c, const char *value)
{
- fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"), value);
+ if (always_inserted_mode == always_inserted_auto)
+ fprintf_filtered (file, _("\
+Always inserted breakpoint mode is %s (currently %s).\n"),
+ value,
+ breakpoints_always_inserted_mode () ? "on" : "off");
+ else
+ fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"), value);
}
+int
+breakpoints_always_inserted_mode (void)
+{
+ return (always_inserted_mode == always_inserted_on
+ || (always_inserted_mode == always_inserted_auto && non_stop));
+}
void _initialize_breakpoint (void);
@@ -8197,11 +8220,6 @@ single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
return 0;
}
-int breakpoints_always_inserted_mode (void)
-{
- return always_inserted_mode;
-}
-
/* This help string is used for the break, hbreak, tbreak and thbreak commands.
It is defined as a macro to prevent duplication.
@@ -8604,14 +8622,18 @@ a warning will be emitted for such breakpoints."),
&breakpoint_set_cmdlist,
&breakpoint_show_cmdlist);
- add_setshow_boolean_cmd ("always-inserted", class_support,
- &always_inserted_mode, _("\
+ add_setshow_enum_cmd ("always-inserted", class_support,
+ always_inserted_enums, &always_inserted_mode, _("\
Set mode for inserting breakpoints."), _("\
Show mode for inserting breakpoints."), _("\
-When this mode is off (which is the default), breakpoints are inserted in\n\
-inferior when it is resumed, and removed when execution stops. When this\n\
-mode is on, breakpoints are inserted immediately and removed only when\n\
-the user deletes the breakpoint."),
+When this mode is off, breakpoints are inserted in inferior when it is\n\
+resumed, and removed when execution stops. When this mode is on,\n\
+breakpoints are inserted immediately and removed only when the user\n\
+deletes the breakpoint. When this mode is auto (which is the default),\n\
+the behaviour depends on the non-stop setting (see help set non-stop).\n\
+In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
+behaves as if always-inserted mode is on; if gdb is controlling the\n\
+inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
NULL,
&show_always_inserted_mode,
&breakpoint_set_cmdlist,