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
This commit is contained in:
Pedro Alves 2022-05-24 19:30:10 +01:00
parent 3ac9da4937
commit fbcda57701
4 changed files with 68 additions and 20 deletions

View file

@ -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]);