Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Phil Muldoon <pmuldoon@redhat.com>, gdb <gdb@sourceware.org>
Subject: Re: Multiple locations and breakpoints confusion.
Date: Tue, 01 May 2018 19:32:00 -0000	[thread overview]
Message-ID: <8a04e8e4-b08e-32d0-b44b-efc6f3917878@redhat.com> (raw)
In-Reply-To: <0627f9db-dc6e-ec75-bfd4-b3cb3cdc1251@redhat.com>

On 05/01/2018 09:15 AM, Phil Muldoon wrote:

> 
> And indeed that breakpoint is not enabled. If I disable the "parent" breakpoint:
> 
> (gdb) disable 1
> (gdb) info breakpoints
> Num     Type           Disp Enb Address            What
> 1       breakpoint     keep n   <MULTIPLE>         
> 1.1                         n     0x00000000004004b3 in multiple_test::foo(int) at multiple.cpp:10
> 1.2                         y     0x00000000004004c3 in multiple_test::foo(double) at multiple.cpp:15
> 
> It shows 1 as disabled but 1.2 as enabled. That seems wrong to me. In
> fact, all of the breakpoints are disabled as evidenced by:
> 
> (gdb) r
> Starting program: /home/pmuldoon/outgoing/multiple
> [Inferior 1 (process 17661) exited normally]
> (gdb)

IMO, it's working as intended.  A location's actual
enablement is determined by:

  is_enabled(bp) && is_enabled(bp.location)

That's basically what the code does, in breakpoint.c:should_be_inserted.

The advantage IMO is that this way, when you re-enable the (parent)
breakpoint, you don't have to re-disable the individual bp locations
that you don't care about, again, because gdb remembers the
enable/disabled status of the individual bp locations.

> 
> So in recreating multiple location management in Python, I'm a bit
> confused if disabling the parent breakpoint should disable all
> locations and there's a display buglet on "info breakpoints", or if
> the "info breakpoints" output is correct and there's a breakpoint
> buglet regarding the disabling of breakpoints?

IMO, it's working as intended.

Maybe it'd help if we would come up with some concise
way to display a location as enabled-but-note-parent-is-disabled
differently, like with a different letter or some extra character
or something like that.  A couple ideas:

 1       breakpoint     keep y   <MULTIPLE>         
 1.1                         y.n   0x00000000004004b3 in multiple_test::foo(int) at multiple.cpp:10
 1.2                         y.y   0x00000000004004c3 in multiple_test::foo(double) at multiple.cpp:15

 1       breakpoint     keep n   <MULTIPLE>         
 1.1                         n.n   0x00000000004004b3 in multiple_test::foo(int) at multiple.cpp:10
 1.2                         n.y   0x00000000004004c3 in multiple_test::foo(double) at multiple.cpp:15

or:

 1       breakpoint     keep y   <MULTIPLE>         
 1.1                         n     0x00000000004004b3 in multiple_test::foo(int) at multiple.cpp:10
 1.2                         y     0x00000000004004c3 in multiple_test::foo(double) at multiple.cpp:15

 1       breakpoint     keep n   <MULTIPLE>         
 1.1                         (y)   0x00000000004004b3 in multiple_test::foo(int) at multiple.cpp:10
 1.2                         (n)   0x00000000004004c3 in multiple_test::foo(double) at multiple.cpp:15

I think I kind of like the second better, though not sure if it
helps more than it confuses.

In any case, the relevant sections in the manual could
use some clarification.

Thanks,
Pedro Alves


  reply	other threads:[~2018-05-01 19:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-01  8:15 Phil Muldoon
2018-05-01 19:32 ` Pedro Alves [this message]
2018-05-02 15:13   ` Eli Zaretskii
2018-05-02 16:15     ` Pedro Alves
2018-05-02 16:27       ` Pedro Alves
2018-05-02 16:42         ` Keith Seitz
2018-05-02 16:33       ` Eli Zaretskii
2018-05-02 16:43         ` Pedro Alves
2018-05-02 16:49           ` Joel Brobecker
2018-05-02 18:18             ` Phil Muldoon
2018-05-02 18:42               ` Pedro Alves

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=8a04e8e4-b08e-32d0-b44b-efc6f3917878@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb@sourceware.org \
    --cc=pmuldoon@redhat.com \
    /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: link
Be 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