GammaRay API Documentation
2.7.0
|
This page lists a number of best practises for GammaRay plugins.
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.
There is a number of shared features worth considering:
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.
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.
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.
If your plugin shows a selectable set of objects, offer object navigation:
Support source code navigation:
If the plugin provides a user interface, make sure it's covered in the user manual.
Each plugin should provide manual and automatic tests.