diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2004-02-26 23:46:47 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2004-02-26 23:46:47 +0000 |
commit | fa8d40aba5a9c35d8fdf56f3b405128a93074d76 (patch) | |
tree | 4136669bae7a9b9f633f1d22c63bfb3c8a0127a0 /gdb/breakpoint.c | |
parent | dd79a6cf0bf327cacd3a133cb9604bad20c9619b (diff) | |
download | gdb-fa8d40aba5a9c35d8fdf56f3b405128a93074d76.zip gdb-fa8d40aba5a9c35d8fdf56f3b405128a93074d76.tar.gz gdb-fa8d40aba5a9c35d8fdf56f3b405128a93074d76.tar.bz2 |
2004-02-26 Jeff Johnston <jjohnstn@redhat.com>
* breakpoint.c (pending_break_support): New setting variable.
(break_command_1): Account for pending_break_support setting
when creating pending breakpoints.
(set_breakpoint_cmd, show_breakpoint_cmd): New functions.
(_initialize_breakpoint): Add "set breakpoint pending" and
"show breakpoint pending" commands.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r-- | gdb/breakpoint.c | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 9cafc6d..ddc3d3b 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -212,6 +212,12 @@ static void ep_skip_leading_whitespace (char **s); if such is available. */ static int can_use_hw_watchpoints; +/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints. + If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints + for unrecognized breakpoint locations. + If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */ +static enum auto_boolean pending_break_support; + void _initialize_breakpoint (void); extern int addressprint; /* Print machine addresses? */ @@ -5097,8 +5103,22 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b error_output_message (NULL, err_msg); xfree (err_msg); - if (!nquery ("Make breakpoint pending on future shared library load? ")) + + /* If pending breakpoint support is turned off, throw error. */ + + if (pending_break_support == AUTO_BOOLEAN_FALSE) + throw_exception (RETURN_ERROR); + + /* If pending breakpoint support is auto query and the user selects + no, then simply return the error code. */ + if (pending_break_support == AUTO_BOOLEAN_AUTO && + !nquery ("Make breakpoint pending on future shared library load? ")) return rc; + + /* At this point, either the user was queried about setting a + pending breakpoint and selected yes, or pending breakpoint + behavior is on and thus a pending breakpoint is defaulted + on behalf of the user. */ copy_arg = xstrdup (addr_start); addr_string = ©_arg; sals.nelts = 1; @@ -7690,6 +7710,16 @@ enable_delete_command (char *args, int from_tty) map_breakpoint_numbers (args, enable_delete_breakpoint); } +static void +set_breakpoint_cmd (char *args, int from_tty) +{ +} + +static void +show_breakpoint_cmd (char *args, int from_tty) +{ +} + /* Use default_breakpoint_'s, or nothing if they aren't valid. */ struct symtabs_and_lines @@ -7714,6 +7744,8 @@ decode_line_spec_1 (char *string, int funfirstline) void _initialize_breakpoint (void) { + static struct cmd_list_element *breakpoint_set_cmdlist; + static struct cmd_list_element *breakpoint_show_cmdlist; struct cmd_list_element *c; breakpoint_chain = 0; @@ -8032,4 +8064,29 @@ hardware.)", add_show_from_set (c, &showlist); can_use_hw_watchpoints = 1; + + add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, "\ +Breakpoint specific settings\n\ +Configure various breakpoint-specific variables such as\n\ +pending breakpoint behavior", + &breakpoint_set_cmdlist, "set breakpoint ", + 0/*allow-unknown*/, &setlist); + add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, "\ +Breakpoint specific settings\n\ +Configure various breakpoint-specific variables such as\n\ +pending breakpoint behavior", + &breakpoint_show_cmdlist, "show breakpoint ", + 0/*allow-unknown*/, &showlist); + + add_setshow_cmd ("pending", no_class, var_auto_boolean, + (char *) &pending_break_support, + "Set debugger's behavior regarding pending breakpoints.\n\ +If on, an unrecognized breakpoint location will cause gdb to create a pending\n\ +breakpoint. If off, an unrecognized breakpoint location results in an error.\n\ +If auto, an unrecognized breakpoint location results in a user-query to see if\n\ +a pending breakpoint should be created.","\ +Show debugger's behavior regarding pending breakpoints.", + NULL, NULL, &breakpoint_set_cmdlist, &breakpoint_show_cmdlist); + + pending_break_support = AUTO_BOOLEAN_AUTO; } |