GammaRay - Introspection/Debugging Tool for Qt Applications
Volker Krause
vkrause at kde.org
Wed Nov 2 20:05:17 GMT 2011
On Tuesday 01 November 2011 21:56:53 Peter Kümmel wrote:
> On 01.11.2011 08:58, Volker Krause wrote:
> >> I've also tried to attach to console apps without success.
> >> Then I realized that you use the hijacked process to show
> >> the GammaRay mainwindow which is not possible in a
> >> QCoreApplication executable.
> >>
> >> So I wonder how difficult it would be to run GammaRay in a
> >> different process? Then an IPC mechanism is needed for all
> >> the information. Would this be fast enough? Do you plan
> >> to add this in future?
> >
> > I'd love to have that, for console apps, remote debugging on an embedded
> > system, and for less interference with the debugged process :)
>
> Couldn't you reuse some IPC parts from KDAB's canceled test tool ;)
I'd actually need to check how that worked ;)
Two other tools to look at would be the Qt Creator QML debugger and Qt
Inspector (both use custom protocols with QDataStream-based serialization
AFAIK).
Another idea that came up for dealing with anything QObject based was to just
export those objects to D-Bus. That automatically gives you cross-process
property/signal/slot introspection (even remotely, the Akonadi remote
debugging server has a D-Bus TCP bridge built in that is also usable stand-
alone). Doesn't really help with things like QAbstractItemModel though.
> > You can probably get a large amount of the features by having some kind of
> > network transparent QAbstractItemModel adapter. But some feature need
> > direct memory access, like rendering of a second QGraphicsScene view,
> > unless you want to send pixmaps over IPC.
>
> Sounds manageable.
>
> >> Is there a single point where all the information of
> >> the target process goes through or is it all over the place?
> >> I assume at least each plugin pulls information by itself.
> >
> > Most of it goes through probe.cpp and the object models provided by it,
> > however all the plug-ins access raw QObject pointers they retrieve from
> > those models (and thus are bound to the same process).
>
> OK, but when the plugins also support ipc, it should be possible to remote
> debug/monitor for instance a state machine.
right, I think it's definitely doable, it's just quite a bit of work :)
regards
Volker
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20111102/9fb6ab95/attachment.sig>
More information about the kde-core-devel
mailing list