GammaRay API Documentation  2.7.0
Plugin Design Guide

Table of Contents

This page lists a number of best practises for GammaRay plugins.

Common Infrastructure

Remote Support

While historically possible, plugins should not rely on the in-process mode, or offer some features only in in-process mode, but fully work out-of-process and thus also with remote devices.

Features

There is a number of shared features worth considering:

Probe Plugin

Performance

There are a number of performance hot paths that affect the entire target application, the plugin should do minimal work on these. Particular care also has to be taken for multi-threading support there.

GUI Dependency

The probe plugin should not supply user interface assets (icons, colors, etc). System icons might not be available on the target (embedded) system, and color/palette settings might be incompatible with that of the client system. Instead, send semantically information to the client, and resolve user interface assets on the client side.

If the probe plugin does not have to link against Qt5::Gui anyway, consider avoiding linking against it to avoid this problem in the first place.

User Interface

For the user-interface, consider the following:

All translation need to happen on the client side, QObject::tr() calls should be avoided in the probe plugin, as loading translation catalogs in the probe would interfere with the target application.

Navigation

Object Navigation

If your plugin shows a selectable set of objects, offer object navigation:

Source Navigation

Support source code navigation:

Documentation

If the plugin provides a user interface, make sure it's covered in the user manual.

Quality Assurance

Each plugin should provide manual and automatic tests.


Klarälvdalens Datakonsult AB (KDAB)
"The Qt Experts"
https://www.kdab.com/
GammaRay
Qt-application inspection and manipulation tool
https://www.kdab.com/gammaray/