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: How to write native (i.e. C/C++) plugin for gdb?


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Doug,

Unfortunately, sustaining - i.e. fixing customer side issues, - has
different requirements comparing to development - you have much less
control on environment and have to support more versions and
configuration than usual.

see also below.

On 2013-12-27 02:55, Doug Evans wrote:
> On Wed, Dec 25, 2013 at 8:51 AM, Dmitry Samersoff
> <dms@samersoff.net> wrote: Everyone,
> 
> Just found a year old discussion about Abhijit proposal.
> 
> So answering to upcoming question - why not a Python.
> 
> Python is very good staff if your speak about source level
> debugging. If you have to debug optimized binary python doesn't
> help match for two reason -
> 
> 1) you have to port all native data structure you plan to work
> with to python.

>> This typically isn't that hard an exercise, have you looked into
>> it?

I really like python (e.g. here is pure python elf reader and
disassemblers for arm, sparc and x86
http://www.samersoff.net/hg/pydas/ written as a part of larger
project) but ...

Typical deadlock case requires me to deal with 10-20 structures.

 Counting different versions and separate big- and little- endian
representation in Python, it creates a real zoo. And it's a pain to
keep this zoo in sync with C version.

In some case I can invoke target process code and it gives an
alleviation but it not always possible.

Use appropriate c headers directly and write simple native plugin is
much easy and safer approach.

Both windbg and mdb supports native plugins so I had a chance to
compare different options in practice.

> 2) python performance is not always acceptable and you not always 
> ever able to run a python.
> 
>> I'd like to see the data that shows the performance isn't
>> acceptable. This could just be mistaken impressions.

On many of arm or mips boards overhead of python interpreter within
debugging session is not acceptable. Not mentioning the fact, that I
have to install python to this board first as it typically not there.

 (Yes, emulation helps but it's not always an option - e.g. it doesn't
help to find that the program doesn't save one of FPU register on some
version of hardware)

Other example - walking through java heap. Re-implementation of
garbage collector code in Python to optimize the walking is rather
costly but without optimization it takes a while.

- -Dmitry

> To get a better picture of native plugins in action, please, take
> a look at solaris mdb.
> 
> -Dmitry
> 
> On 2013-12-25 19:32, Dmitry Samersoff wrote:
>>>> Joel,
>>>> 
>>>> Thank you for the response.
>>>> 
>>>> I found this patch 
>>>> https://sourceware.org/ml/gdb-patches/2012-05/msg00500.html -
>>>> many thanks to Abhijit.
>>>> 
>>>> 1. What is the reason to keep it off main trunk? Is there a
>>>> chance to have it changed?
>>>> 
>>>> 2. What API is available from within a plugin? i.e. how I
>>>> can access coredump memory?
>>>> 
>>>> -Dmitry
>>>> 
>>>> On 2013-12-24 18:47, Joel Brobecker wrote:
>>>>>> I need to implement scenario like one below:
>>>>>> 
>>>>>> (gdb) load-plugin  libgdbjvm.so (gdb) attach PID (gdb)
>>>>>> jvm show loaded-classes (gdb) jvm show java-threads (gdb)
>>>>>> jvm show code-cache
>>>> 
>>>>> Maybe you could add some routines in your program that are
>>>>> solely intended for debugging purposes, and then define
>>>>> commands that call those routines. Off hand, that's the
>>>>> only way I can think of. Otherwise, interface the C++ stuff
>>>>> you need from Python - if necessary, export some stuff to
>>>>> C?
>>>> 
>>>> 
>>>> 
>>>> 
> 

- -- 
Dmitry Samersoff
Saint Petersburg, Russia, http://devnull.samersoff.net
* There will come soft rains  ...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJSvYtxAAoJEHEy08c4gIABuNYH/RLGcE+cF1wkcALL+Jnoj3iV
xHPjQ0FsTakAPzuVin+9eXXS6I+Ap3ShNO+mhklAslIuf+Cb8xdK8Ocap0LyZ6o+
j23CRcKqDLVR3IZzgdlVbopm4fh1tqiy4CbSRGi8Yd7A0Z7i0eDvWEkRCLkbm7WU
IpQtcjB+ZUJXEFAqJZ4pVbg7lzUVtBx86o00BbUqbJxGtW+aFGULXCZyu5PZAans
7/5cA7u9GI94bXt2vX95SPgBJN9LSRjyMOI6InMGIVOhAtNbwsThYAqaZ577Qt5g
cgw3lWO+4P3g8qcxZs6U4W1tdTOXrhIYzLlq21Tn26Rx/eg/4m9gG5LfOHHrNFU=
=GZ8+
-----END PGP SIGNATURE-----


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