Re: Python API: Type introspection of function arguments

Simon Marchi <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAFXXi0m_w1CftMZ5B6Q7Wta1mKDLPA_BAAxQZ7sxAZ8Vtkzoxw@mail.gmail.com>
On 25 September 2015 at 00:24, Martin Ünsal <[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.