From: Phil Muldoon <pmuldoon@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [patch] Add an evaluation function hook to Python breakpoints.
Date: Mon, 13 Dec 2010 17:21:00 -0000 [thread overview]
Message-ID: <m3ipyxpp1i.fsf@redhat.com> (raw)
In-Reply-To: <83zks9hfsz.fsf@gnu.org>
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Phil Muldoon <pmuldoon@redhat.com>
>> Cc: gdb-patches@sourceware.org
>> Date: Mon, 13 Dec 2010 14:47:33 +0000
>>
>> +class MyBreakpoint (gdb.Breakpoint):
>> + def evaluate (self):
>> + inf_val = gdb.parse_and_eval("foo")
>> + if inf_val == 3:
>> + return True
>> + return False
>>
>> There are two scenarios where the breakpoints would be executed. The first
>> is where you would end up instantiating two instances of the above
>> breakpoint at the same location:
>>
>> python bp1 = MyBreakPoint("myfile.c:42")
>> python bp2 = MyBreakpoint("myfile.c:42", internal=True)
>
> So I would rephrase the text in question like this:
>
> If this function is defined in a sub-class of @code{gdb.Breakpoint},
> it will be called when the inferior reaches any breakpoint which
> instantiates that sub-class.
But only if the inferior has stopped at the location of that
breakpoint. So given this case:
python bp1 = MyBreakPoint("myfile.c:42")
python bp2 = MyBreakpoint("myfile.c:45")
Those two are using the same sub-classed breakpoint but are at different
locations. So if the inferior reached line 42, then only the evaluate
function of bp1 would be called. The above scenario would happen, for
example, if the user was checking the state of a global variable.
In the previous example:
python bp1 = MyBreakPoint("myfile.c:42")
python bp2 = MyBreakpoint("myfile.c:42", internal=True)
The evaluate function would be called for both bp1 an bp2 as they are
both at the same location, and they both have evaluate functions
defined.
Make sense?
>> > Sounds like a non-trivial limitation; is it really necessary?
>>
>> I mentioned it as it was a non-trivial limitation? It is something the user
>> should not do in the evaluate function. The most pressing reason is
>> that there may be other breakpoints to be checked at that location so
>> the state of the inferior should remain. The other is it is just bad
>> business influencing the inferior position (i.e., stepping) when
>> breakpoint evaluation is being performed.
>
> We allow that from the CLI, FWIW.
>> This is all well and good, but we cannot prevent the user from doing
>> it; just tell them it is very bad idea. ;)
>
> But if there's only one breakpoint at that location, there doesn't
> seem to be any reasons to disallow this, right?
Aha, I did not know about the CLI version, (or more specifically the
fact that we do not make a mention that it may be unwise to start
tinkering with the state of the inferior.) In retrospect I think you
are right; adding this text would confuse matters. I have removed it
from the patch.
Cheers
Phil
next prev parent reply other threads:[~2010-12-13 17:21 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-13 13:50 Phil Muldoon
2010-12-13 14:19 ` Eli Zaretskii
2010-12-13 14:47 ` Phil Muldoon
2010-12-13 15:07 ` Eli Zaretskii
2010-12-13 17:21 ` Phil Muldoon [this message]
2010-12-13 17:46 ` Eli Zaretskii
2010-12-13 14:33 ` Pedro Alves
2010-12-13 14:56 ` Phil Muldoon
2010-12-13 15:07 ` Pedro Alves
2010-12-13 20:45 ` Doug Evans
2010-12-13 21:02 ` Phil Muldoon
2010-12-14 3:31 ` Doug Evans
2010-12-14 17:18 ` Phil Muldoon
2010-12-14 17:28 ` Tom Tromey
2010-12-14 19:51 ` Phil Muldoon
2010-12-14 20:00 ` Phil Muldoon
2010-12-15 15:34 ` Phil Muldoon
2010-12-15 20:51 ` Tom Tromey
2011-01-27 12:44 ` Phil Muldoon
[not found] ` <AANLkTimi6ugruNAqUGHni8Kvkz+B5-s2aAkEoTY2D_gT@mail.gmail.com>
2011-01-27 21:40 ` Phil Muldoon
2011-01-28 10:42 ` Tom Tromey
2010-12-15 16:21 ` Doug Evans
2010-12-15 20:57 ` Tom Tromey
2010-12-21 17:33 ` Doug Evans
2010-12-21 20:02 ` Tom Tromey
2010-12-22 16:34 ` Doug Evans
2010-12-22 17:35 ` Tom Tromey
2010-12-28 5:53 ` Doug Evans
2011-01-05 18:35 ` Tom Tromey
2011-01-05 20:23 ` Phil Muldoon
2011-01-09 20:32 ` Doug Evans
2010-12-14 17:46 ` Pedro Alves
2010-12-14 16:35 ` Tom Tromey
2010-12-14 17:02 ` Phil Muldoon
2010-12-14 17:48 ` Tom Tromey
2010-12-14 16:42 ` Tom Tromey
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=m3ipyxpp1i.fsf@redhat.com \
--to=pmuldoon@redhat.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@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: 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