GammaRay est un outil de débogage et d’introspection développé spécifiquement pour les applications Qt. Contrairement aux débogueurs classiques (GDB, LLDB ou autres, intégrés ou non aux environnements de développement intégrés), il comprend Qt et son mécanisme de fonctionnement, avec les connexions de signaux et slots, la hiérarchie des objets.

Il donne donc, de manière générale, une vue de plus haut niveau du comportement de l’application, en comprenant parfaitement la structure de composants de Qt comme les QGraphicsView ou le graphe de scène Qt Quick —  là où un débogueur traditionnel ne peut se placer qu’au niveau de l’instruction machine, avec parfois des extensions pour Qt, notamment pour afficher correctement la valeur de certaines variables, ce qui devient plus délicat encore pour le code généré par le moc.

Un deuxième gros avantage de GammaRay est son aspect visuel : il est capable de générer une visualisation de parties complètes de l’application pour en faciliter le débogage, plus particulièrement quand les éléments s’imbriquent l’un dans l’autre. Par exemple, il peut afficher les machines d’état et leur évolution, le contenu des modèles, les liens complexes entre signaux et slots : au lieu d’aller rechercher ces éléments disparates au fond des structures de données de Qt, il les rassemble tous dans une vue unique.



De plus, il ne fait pas que lire les objets : il peut aussi les modifier, en utilisant les facilités offertes par QObject. En effet, malgré toute la puissance du langage et l’importance de son écosystème, Qt utilise du C++ et a toujours besoin d’une étape de compilation, que ce système permet d’éviter pour une série de cas lors d’une séance de débogage intensif dans une application complexe. Ainsi, un développeur peut modifier une bonne partie du comportement de l’application à l’exécution, tout comme les développeurs Web exploitent les outils offerts par les navigateurs modernes —  qu’elle soit basée sur Qt Quick, Qt Widgets, QGraphicsView… ou toute combinaison des trois !

La version 2.4.0 arrive très bientôt et apporte pas mal d’améliorations côté Qt Quick, notamment les propriétés attachées et la navigation dans les items. Pour les propriétés de type composite, l’éditeur peut maintenant agir en mode récursif. La gestion des erreurs et avertissements gérés par la classe QMessageLogger (ce qui inclut notamment les fonctions qDebug, qCritical, etc.) a été retravaillée, principalement au niveau de la liste des fonctions dans la pile au moment de l’appel.

Voir aussi les sources : site officiel, dépôt GitHub.

Ce contenu a été publié dans Qt par dourouc05.



Et vous ?
Quels outils utilisez-vous pour le débogage de vos applications Qt ?
Quelles sont les fonctionnalités les plus intéressantes pour vous dans GammaRay ?
Au contraire, quels éléments manquent le plus ?