teaching gdb about new types?

Richard Silverman res@qoxp.net
Sat Apr 30 03:02:00 GMT 2011


On Fri, 29 Apr 2011, Paul Koning wrote:

> If you're worried about types rather than line numbers, I would think that all you'd need is a symbol table that has the right type definitions in it.  If you know what they are supposed to be, you can supply such a symbol table easily enough.
>
> 	paul

I tried that -- I created a little file:

----------------------------------------
#include <pthreads.h>

pthread_cond_t p;
pthread_mutex_t m;
----------------------------------------

... and built an object from it.  However, I can't find a way to get gdb to use it while debugging an existing program, that is, to add the type definitions in that object to its existing set.  The commands "symbol-file" and "add-symbol-file" seem likely candidates, but they don't appear to do it.

- Richard

> On Apr 29, 2011, at 4:42 PM, Richard Silverman wrote:
>
>> On Fri, 29 Apr 2011, Paul Koning wrote:
>>
>>> The simple answer is to get a copy of libc.so with debug symbols, and load that symbol table.  You don't have to replace the library itself to do that.
>>>
>>> 	paul
>>
>> I know, thanks; but the host is Solaris, and Oracle doesn't appear to provide this (although I'm pursuing it with them.).  I could also build the OpenSolaris libc and hope they're close enough.  However, it really seems as if one ought to be able to do what I described.
>>
>> - Richard
>>
>>> On Apr 29, 2011, at 2:36 PM, Richard Silverman wrote:
>>>
>>>> Hello,
>>>>
>>>> This seems as if it should be simple, but I can't find an answer.  I would like to teach gdb about new types relevant to the program being debugged, which are not among the debugging info in the program.  A concrete example: I have a program which uses pthreads from libc.  It calls:
>>>>
>>>>      int pthread_cond_wait(pthread_cond_t *restrict cond,
>>>>          pthread_mutex_t *restrict mutex);
>>>>
>>>> ... and the argument types are defined in system header files.  But libc.so has no debugging info, so gdb doesn't know about these types, and can't interpret the arguments for me.  How can I teach gdb about these types?
>>>>
>>>> Thanks,
>>>>
>>>> - Richard
>>>
>>>
>>>
>
>
>

-- 
   Richard Silverman
   res@qoxp.net



More information about the Gdb mailing list