GammaRay - Introspection/Debugging Tool for Qt Applications

Peter Kümmel syntheticpp at gmx.net
Mon Oct 31 21:36:08 GMT 2011


On 30.10.2011 13:21, Volker Krause wrote:
> Hi!
>
> During the Qt Dev Days in Munich last week we (KDAB) released a new Free
> Software introspection/debugging tool for Qt applications, called GammaRay:
> https://github.com/KDAB/GammaRay
>
> It hooks itself into a Qt application (at start-up or at runtime) using a
> variety of methods (ranging from assembler hacks to (ab)using Qt plug-ins) and
> uses the Qt meta object system for introspecting object, properties, signals,
> slots, signal/slot connections, etc. Nothing really new until here, tools like
> Qt Inspector or KSpy can do this already. On top of that GammaRay adds a bunch
> of higher level tools though, for example:
>
> - QWidget layout overlay, similar to designer
> - Inspecting a QGraphicsScene and various details of QGraphicsItems
> (visualizing shapes, bounding rects, transformation origins, etc)
> - Looking at the full (proxy) model hierarchy and all intermediate results in
> there
> - a live updating QStateMachine visualization
> - attaching of QScriptEngineDebugger and QWebInspector to the corresponding
> objects in the application
> - a QTextDocument document object model viewer
>
> Additionally, GammaRay has a plug-in interface for adding new tools, say a
> KJob tracker.
>
> GammaRay works on Linux, Mac and Windows (MSVC only so far), it needs to be
> compiled against the same Qt version used by the application you are about to
> debug though. There's also a Qt Creator plug-in for it
> (https://github.com/KDAB/KDAB-Creator).
>
> Some screenshots can be found here: http://www.kdab.com/gammaray
>
> GammaRay was originally developed in support for the Kontact Touch project,
> back when there wasn't a QML debugger yet. The proxy model debugger also
> proved quite helpful on KMail, maybe it can help some of you as well :)
>
> Needless to say that contributions are very much welcome.
>
> regards
> Volker

Congratulation for this very nice tool!

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?

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.

And how much does the current code depend on x86/64?
Would it be hard to support PPC?

Peter









More information about the kde-core-devel mailing list