This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH, doc RFA] Add ability to set random attributes in python objfiles,progspaces
- From: Doug Evans <dje at google dot com>
- To: Phil Muldoon <pmuldoon at redhat dot com>
- Cc: gdb-patches at sourceware dot org, eliz at gnu dot org
- Date: Fri, 10 Oct 2014 10:35:52 -0700
- Subject: Re: [PATCH, doc RFA] Add ability to set random attributes in python objfiles,progspaces
- Authentication-results: sourceware.org; auth=none
- References: <yjt27g09qcx2 dot fsf at ruffy dot mtv dot corp dot google dot com> <54379223 dot 3080305 at redhat dot com>
Phil Muldoon writes:
> Maybe add a small example here as you did with gdb.Objfile? Or maybe
> an xref. One of my goals in the next year is to add (and backfill in
> existing documentation) more example led documentation for Python.
> Sometimes an example speaks (ten) thousand words!
I couldn't think of a simple one.
> > +@smallexample
> > +(gdb) python
> > +import datetime
> > +def new_objfile_handler (event):
> > + event.new_objfile.time_loaded = datetime.datetime.today ()
> > +gdb.events.new_objfile.connect (new_objfile_handler)
> > +end
> > +(gdb) file ./hello
> > +Reading symbols from ./hello...done.
> > +(gdb) python print gdb.objfiles()[0].time_loaded
> > +2014-10-09 11:41:36.770345
> > +@end smallexample
>
> This is really awesome example. (Linking in from comment above).
> Thanks for taking the time out to provide a "useful" example that is
> also simple.
Yeah, this one was simple enough and educational enough
that it was worth the time and effort.
> > A @code{gdb.Objfile} object has the following methods:
> >
> > @defun Objfile.is_valid ()
> > diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
> > index df29691..32bceee 100644
> > --- a/gdb/python/py-objfile.c
> > +++ b/gdb/python/py-objfile.c
> > @@ -30,6 +30,9 @@ typedef struct
> > /* The corresponding objfile. */
> > struct objfile *objfile;
> >
> > + /* Dictionary holding user-added attributes. */
> > + PyObject *dict;
> > +
>
> My only nit here is the naming. dict is kind of generic. I know it
> follows on from the fields code :( Even though you wrote a comment,
> later use in the code means (say a year from now), I have to
> remember what this mysterious "dict" is.
Note that this is also __dict__ from the Python side.
I'd use the name __dict__ here for clarity, but I can't. :-)
[compiler's namespace]
I can certainly add __dict__ to the comment though.
> Thanks for this patch. It seems really useful (and in implementation
> fairly simple to implement). I wonder if there are other objects in
> Python that could benefit from the ability to arbitrarily record
> keep?
Like all things in gdb/python, things get added on a demand basis.
[This observation extends to more pieces of gdb than just gdb/python.
I'm happy to change the rules, but I do insist on there being
no double standards. :-)]