This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Python API: Type introspection of function arguments


On 25 September 2015 at 00:24, Martin Ãnsal <munsal@nestlabs.com> wrote:
> Hi all,
>
> GDB Python bindings are great. I have a question though.
>
> I'm trying to use a Python script to introspect the type of a function
> argument. The GDB documentation claims this is possible:
> https://sourceware.org/gdb/current/onlinedocs/gdb/Types-In-Python.html#Types-In-Python
>
> "â Function: Type.fields ()
> For structure and union types, this method returns the fields. Range
> types have two fields, the minimum and maximum values. Enum types have
> one field per enum constant. Function and method types have one field
> per parameter."
>
> However when I try this (in 7.8.1.20141128-cvs) I get the following error:
>
>>>> sym = gdb.lookup_global_symbol('my_function')
>>>> print sym.type.code == gdb.TYPE_CODE_FUNC
> True
>>>> print sym.type.fields()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: Type is not a structure, union, or enum type.
>>>>
>
> I also looked in the code (gdb/python/py-type.c) and this seems to
> have the same behavior in 7.10.
>
> In light of this issue, can anyone suggest how to get function
> argument type information from Python API?
>
> Thanks,
> Martin

Hi Martin,

I found a bug for that in the bugzilla:

  https://sourceware.org/bugzilla/show_bug.cgi?id=18073

I tested the feature with a few releases of gdb. It appeared it 7.1
and stopped working in 7.4, so it's been broken for quite a while.

The patch attached to the bug seems to make it work again. I am
running the regression testsuite at the moment. If it's successful,
I'll try to add a test for that and submit it... unless you want to do
it, of course :).

In the mean time, I don't have any suggestions to circumvent that,
other than building your own gdb (with the patch applied) for now.

Simon


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]