This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Enable count for breakpoints
- From: Stan Shebs <stanshebs at earthlink dot net>
- To: gdb-patches at sourceware dot org
- Date: Thu, 09 Feb 2012 18:12:06 -0800
- Subject: [PATCH] Enable count for breakpoints
This patch implements a request from Ericsson GDB users, to generalize
"enable once" so that breakpoints can be disabled after a given number
of hits instead of the first one. The command looks like
enable count <n> [<breakpoint numbers>]
Now in the single-threaded all-stop case, this doesn't have much value;
after all, you're stopped at the breakpoint, and are free to
enable/disable as you like. But in the multi-threaded non-stop case,
enable-once no longer works so well, since multiple threads may hit the
breakpoint simultaneously, and if you don't want the first hit, you're
out of luck, it's already disabled and all the threads are running out
of control. But if you don't auto-disable, you could get stacked up
with hundreds of hit reports that you don't want.
So this patch gives you a way to have a countdown before disabling.
"enable count 1" is identical to "enable once", so the implementation is
not conceptually complicated, we just need a struct to package up both
disposition and countdown to be passed around the mapping functions.
Stan
2012-02-09 Stan Shebs <stan@codesourcery.com>
* NEWS: Mention enable count command.
* breakpoint.h (struct breakpoint): New field enable_count.
* breakpoint.c (enable_breakpoint_disp): Add count argument.
(enable_breakpoint): Add arg to call.
(struct disp_data): New struct.
(do_enable_breakpoint_disp): Interp arg as disp_data and unpack.
(do_map_enable_once_breakpoint): Create a struct and pass it.
(do_map_enable_delete_breakpoint): Ditto.
(do_map_enable_count_breakpoint): New function.
(enable_count_command): New function.
(bpstat_stop_status): Decrement enable_count.
(print_one_breakpoint_location): Report enable count.
(_initialize_breakpoint): Add enable count command.
* gdb.texinfo (Disabling Breakpoints): Document enable count.
* gdb.base/ena-dis-br.exp: Add enable count test.
Attachment:
enablecount-patch-1
Description: Text document