From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28806 invoked by alias); 11 Jan 2012 09:03:04 -0000 Received: (qmail 28794 invoked by uid 22791); 11 Jan 2012 09:03:02 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 11 Jan 2012 09:02:49 +0000 Received: by vcge1 with SMTP id e1so396977vcg.0 for ; Wed, 11 Jan 2012 01:02:49 -0800 (PST) Received: by 10.220.213.137 with SMTP id gw9mr13415897vcb.3.1326272569204; Wed, 11 Jan 2012 01:02:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.3.130 with HTTP; Wed, 11 Jan 2012 01:02:28 -0800 (PST) In-Reply-To: References: <83r4z8eqoa.fsf@gnu.org> From: Kevin Pouget Date: Wed, 11 Jan 2012 09:05:00 -0000 Message-ID: Subject: Re: [PATCH] Add bp_location to Python interface To: Doug Evans Cc: Eli Zaretskii , gdb-patches@sourceware.org, pmuldoon@redhat.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00343.txt.bz2 On Tue, Jan 10, 2012 at 11:18 PM, Doug Evans wrote: > On Tue, Jan 10, 2012 at 6:50 AM, Kevin Pouget wr= ote: >>>> +@defun BpLocation.is_valid () >>>> +Returns @code{True} if the @code{gdb.BpLocation} object is valid, >>>> +@code{False} if not. =A0A @code{gdb.BpLocation} object may be invalid= ated by >>>> +GDB at any moment for internal reasons. =A0All other @code{gdb.BpLoca= tion} >>>> +methods and attributes will throw an exception if the object is inval= id. >>> >>> @value{GDBN} instead of "GDB". >>> >>> In any case, the last 2 sentences sound scary: I could interpret them >>> as meaning I cannot trust the locations at all. =A0If that is indeed so, >>> what use are they? >> >> that's already discussed above, but I don't want you to be scared, so >> let me explain what I meant: >> it's not "at any moment", but rather "after any call to GDB's Python >> interface". We may want to say that it's only breakpoint or >> execution-related calls, but _I_ can't ensure that this is true, and >> it 'might' change in the future: >> >>> A @code{gdb.BpLocation} object may be invalidated during >>> any call to @{GDB}'s API for internal reasons (for instance, but not li= mited to, >>> breakpoint or execution-related mechanisms). >> >> (I'm not sure what's the right Python term here for 'mechanisms', >> reading/writing an attribute may trigger internal functions, so 'call' >> or 'function' seem not to suit very well) > > Don't take this as a requirement, but this volatility isn't a property > of python's BpLocations, > Thus I'd rather see the general discussion of why breakpoint locations > are volatile, scary, whatever, elsewhere, and just have a link to that > documentation here. > I think that will help clear things up: In the breakpoints section of > the manual just state what breakpoint locations are, what their > properties are, etc. =A0Then in the above docs you don't have to worry > so much about scaryness or whatever: Whatever issues locations have, > users already need to be at least somewhat aware of them. > > Another reason to do this is that when Guile scripting gets added, we > don't want to have to document these issues twice. :-) I'm not sure we can really move it away from the Python/Guile API, because, AFAIU, this volatile aspect if purely internal. 'Normal' users won't ever see it. > $ i b > Num Type Disp Enb Address What > 1 breakpoint keep y > 1.1 y 0x4562c0 in main at ../../../gi= t/gdb/gdb/gdb.c:26 inf 2 > 1.2 y 0x4562c0 in main at ../../../gi= t/gdb/gdb/gdb.c:26 inf 1 will remain the same all the time, but the objects (both in Python and their GDB backends) in gdb.breakpoints()[0].locations() will be deleted and re-created at various moments (cf. previous discussions). So far, I couldn't really understand what's the rational behind that ... [I'm not sure how well you know this part of GDB, please don't hesitate to correct me if I'm wrong] Kevin