[python] [patch] Add is_valid to several classes

Phil Muldoon pmuldoon@redhat.com
Wed Mar 16 20:04:00 GMT 2011


Eli Zaretskii <eliz@gnu.org> writes:

>> From: Phil Muldoon <pmuldoon@redhat.com>
>> Date: Wed, 16 Mar 2011 16:02:44 +0000
>> 
>> --- a/gdb/NEWS
>> +++ b/gdb/NEWS
>> @@ -38,6 +38,10 @@
>>  
>>  * Python scripting
>>  
>> +  ** Symbols, Symbol Table, Symbol Table and Line, Object Files,
>> +     Inferior, Inferior Thread, Blocks, and Block Iterator APIs now
>> +     have an is_valid method.
>> +
>
> This part is okay.

Thanks.


>> +@defmethod Inferior is_valid
>> +Returns true if the @code{gdb.Inferior} object is valid, false if
>            ^^^^                                             ^^^^^
> You mean @code{true} and @code{false}, right?  These are Python
> symbols, aren't they?
>
> Same comment on the other uses of "true" and "false".

As Paul notes, probably should be @code{True} and @code{False} for
Python notation.

>> +A @code{gdb.Objfile} object can become invalid if the object file it
>> +refers to does not exist in @value{GDBN} any longer.
>
> "File does not exist in GDB" sounds awkward: GDB is not a filesystem.
> How about "file is not loaded in GDB" instead?
>
>> +Returns true if the @code{gdb.Block} object is valid, false if not. A

Okay.
                                                                      ^^
> Two spaces.

Oops.

>> +@code{gdb.Block} supports via the Python method @code{iter} function.
>
> Did you really mean to say "Python method `iter' function"?  I think
> either "method" or "function", no?

iter() is a built in Python function (nothing to do with GDB), that
extracts an iterator from a Python object if the object supports it.  I
don't mind how we word it. It was purely illustrative.  In fact in
Python there are many ways to invoke iteration in an object that
supports it.  The "in" keyword for example (IE, for x in y).
What do you think?

>> +A @code{gdb.Symbol} object can become invalid if the symbol it refers
>> +to does not exist in @value{GDBN} any longer.
>
> How can a symbol cease to exist?

The canonical case for this is the "file" command. The test cases in the
patch proves that (and in fact the test case library has a specialized
function: "gdb_unload"). So symbol, symbol tables, symbol table and
line, objfiles will be unloaded in that context.  I'm not sure why a
user would use this case, but the fact that it can exist means we have
to deal with validating the object lifetime.


>> +if not.  A @code{gdb.Symtab_and_line} object can become invalid if the
>> +Symbol table and line object it refers to does not exist in
>> +@value{GDBN} any longer.
>
> Likewise here: does GDB unload symtabs once they were loaded?
>
>> +A @code{gdb.Symtab} object can become invalid if the symbol table it
>> +refers to does not exist in @value{GDBN} any longer.

Thanks

Phil



More information about the Gdb-patches mailing list