public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Pedro Alves <palves@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Show enabled locations with disabled breakpoint parent as "y-" Date: Wed, 25 May 2022 18:56:40 +0000 (GMT) [thread overview] Message-ID: <20220525185640.D19B13856DD2@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fbcda577011d73fdcf1ebf86160b6fc8ddd95299 commit fbcda577011d73fdcf1ebf86160b6fc8ddd95299 Author: Pedro Alves <pedro@palves.net> Date: Tue May 24 19:30:10 2022 +0100 Show enabled locations with disabled breakpoint parent as "y-" Currently, breakpoint locations that are enabled while their parent breakpoint is disabled are displayed with "y" in the Enb colum of "info breakpoints": (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep n <MULTIPLE> 1.1 y 0x00000000000011b6 in ... 1.2 y 0x00000000000011c2 in ... 1.3 n 0x00000000000011ce in ... Such locations won't trigger a break, so to avoid confusion, show "y-" instead. For example: (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep n <MULTIPLE> 1.1 y- 0x00000000000011b6 in ... 1.2 y- 0x00000000000011c2 in ... 1.3 n 0x00000000000011ce in ... The "-" sign is inspired on how the TUI represents breakpoints on the left side of the source window, with "b-" for a disabled breakpoint. Change-Id: I9952313743c51bf21b4b380c72360ef7d4396a09 Diff: --- gdb/NEWS | 10 +++++++++ gdb/breakpoint.c | 37 ++++++++++++++++++++++++++----- gdb/doc/gdb.texinfo | 13 +++++++++++ gdb/testsuite/gdb.cp/ena-dis-br-range.exp | 28 +++++++++++------------ 4 files changed, 68 insertions(+), 20 deletions(-) diff --git a/gdb/NEWS b/gdb/NEWS index a72fee81550..52ffdc4c83a 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -3,6 +3,16 @@ *** Changes since GDB 12 +* "info breakpoints" now displays enabled breakpoint locations of + disabled breakpoints as in the "y-" state. For example: + + (gdb) info breakpoints + Num Type Disp Enb Address What + 1 breakpoint keep n <MULTIPLE> + 1.1 y- 0x00000000000011b6 in ... + 1.2 y- 0x00000000000011c2 in ... + 1.3 n 0x00000000000011ce in ... + * Support for Thread Local Storage (TLS) variables on FreeBSD arm and aarch64 architectures. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index eac6410a578..ed932a19ed7 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -6234,13 +6234,38 @@ print_one_breakpoint_location (struct breakpoint *b, /* 4 */ annotate_field (3); - /* For locations that are disabled because of an invalid condition, - display "N*" on CLI, where "*" refers to a footnote below the - table. For MI, simply display a "N" without a footnote. */ - const char *N = (uiout->is_mi_like_p ()) ? "N" : "N*"; if (part_of_multiple) - uiout->field_string ("enabled", (loc->disabled_by_cond ? N - : (loc->enabled ? "y" : "n"))); + { + /* For locations that are disabled because of an invalid + condition, display "N*" on the CLI, where "*" refers to a + footnote below the table. For MI, simply display a "N" + without a footnote. On the CLI, for enabled locations whose + breakpoint is disabled, display "y-". */ + auto get_enable_state = [uiout, loc] () -> const char * + { + if (uiout->is_mi_like_p ()) + { + if (loc->disabled_by_cond) + return "N"; + else if (!loc->enabled) + return "n"; + else + return "y"; + } + else + { + if (loc->disabled_by_cond) + return "N*"; + else if (!loc->enabled) + return "n"; + else if (!breakpoint_enabled (loc->owner)) + return "y-"; + else + return "y"; + } + }; + uiout->field_string ("enabled", get_enable_state ()); + } else uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]); diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index e5c1ee33aac..68679982919 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -4668,6 +4668,19 @@ in which case @value{GDBN} acts on all the locations in the range (inclusive). Disabling or enabling the parent breakpoint (@pxref{Disabling}) affects all of the locations that belong to that breakpoint. +Locations that are enabled while their parent breakpoint is disabled +won't trigger a break, and are denoted by @code{y-} in the @code{Enb} +column. For example: + +@smallexample +(@value{GDBP}) info breakpoints +Num Type Disp Enb Address What +1 breakpoint keep n <MULTIPLE> +1.1 y- 0x00000000000011b6 in ... +1.2 y- 0x00000000000011c2 in ... +1.3 n 0x00000000000011ce in ... +@end smallexample + @cindex pending breakpoints It's quite common to have a breakpoint inside a shared library. Shared libraries can be loaded and unloaded explicitly, diff --git a/gdb/testsuite/gdb.cp/ena-dis-br-range.exp b/gdb/testsuite/gdb.cp/ena-dis-br-range.exp index 782756e9ab1..83c9838aa42 100644 --- a/gdb/testsuite/gdb.cp/ena-dis-br-range.exp +++ b/gdb/testsuite/gdb.cp/ena-dis-br-range.exp @@ -44,10 +44,10 @@ proc make_info_breakpoint_reply_re {b1 b2 b21 b22 b23 b24} { "1${ws}breakpoint keep ${b1}${ws}.* in marker\\(\\) at .*" \ "${ws}breakpoint already hit 1 time.*" \ "2${ws}breakpoint${ws}keep${ws}${b2}${ws}<MULTIPLE>.*" \ - "2.1${ws}${b21}.*" \ - "2.2${ws}${b22}.*" \ - "2.3${ws}${b23}.*" \ - "2.4${ws}${b24}.*" \ + "2.1${ws}${b21}${ws}.*" \ + "2.2${ws}${b22}${ws}.*" \ + "2.3${ws}${b23}${ws}.*" \ + "2.4${ws}${b24}${ws}.*" \ ] } @@ -74,18 +74,18 @@ proc test_enable_disable {cmd b1 b2 b21 b22 b23 b24} { test_enable_disable "disable 1" n y y y y y test_enable_disable "enable 1" y y y y y y -# Check that we can disable/disable a breakpoint with multiple +# Check that we can disable/enable a breakpoint with multiple # locations. -test_enable_disable "disable 2" y n y y y y -test_enable_disable "enable 2" y y y y y y +test_enable_disable "disable 2" y n y- y- y- y- +test_enable_disable "enable 2" y y y y y y -# Check that we can disable/disable a range of breakpoints. -test_enable_disable "disable 1-2" n n y y y y -test_enable_disable "enable 1-2" y y y y y y +# Check that we can disable/enable a range of breakpoints. +test_enable_disable "disable 1-2" n n y- y- y- y- +test_enable_disable "enable 1-2" y y y y y y -# Check that we can disable/disable a list of breakpoints. -test_enable_disable "disable 1 2" n n y y y y -test_enable_disable "enable 1 2" y y y y y y +# Check that we can disable/enable a list of breakpoints. +test_enable_disable "disable 1 2" n n y- y- y- y- +test_enable_disable "enable 1 2" y y y y y y # Check that we can disable/enable a single location breakpoint. test_enable_disable "disable 2.2" y y y n y y @@ -100,7 +100,7 @@ test_enable_disable "enable 2.2-3" y y y y y y test_enable_disable "disable 2.2-2" y y y n y y test_enable_disable "enable 2.2-2" y y y y y y -# Check that we can disable/disable a list of breakpoints that +# Check that we can disable/enable a list of breakpoints that # includes some elements with location ranges and others without. test_enable_disable "disable 1 2.1 2.3-4" n y n y n n test_enable_disable "enable 1 2.1 2.3-4" y y y y y y
reply other threads:[~2022-05-25 18:56 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220525185640.D19B13856DD2@sourceware.org \ --to=palves@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).