Débogage des applications QML
Lorsque vous développez une application avec QML, il existe de nombreuses façons de déboguer les problèmes auxquels vous pourriez être confronté. Les sections ci-dessous décrivent les outils de débogage disponibles et leur utilisation.
API de la console
| Fonctionnalité | Description |
|---|---|
| Journal | Utilisez console.log, console.debug, console.info, console.warn ou console.error pour afficher des informations de débogage sur la console.Par exemple : La sortie est générée à l'aide des méthodes qCDebug, qCWarning ou qCCritical en C++, avec une catégorie Voir également Techniques de débogage. |
| Assert | console.assert vérifie qu’une expression est vraie. Si ce n’est pas le cas, il écrit un message facultatif sur la console et affiche la trace de la pile.Par exemple : |
| Timer | console.time et ` console.timeEnd ` enregistrent le temps (en millisecondes) écoulé entre les appels. Ces deux fonctions prennent un argument de type chaîne de caractères qui identifie la mesure.Par exemple : |
| Trace | console.trace affiche la trace de pile de l’exécution JavaScript au moment où elle a été appelée. Cette trace de pile contient le nom de la fonction, le nom du fichier, le numéro de ligne et le numéro de colonne. La trace de pile est limitée aux 10 dernières trames de pile. |
| Count | console.count affiche le nombre actuel d’exécutions d’un morceau de code particulier, accompagné d’un message.Par exemple : L'exemple de code ci-dessus affiche « |
| Profile | console.profile active les profileurs QML Profiler et JavaScript. Les appels imbriqués ne sont pas pris en charge et un avertissement s'affiche dans la console. |
| ProfileEnd | console.profileEnd désactive les profileurs QML et JavaScript. L'appel de cette fonction sans avoir préalablement appelé console.profile affiche un avertissement dans la console. Un client de profilage doit être connecté avant cet appel pour recevoir et stocker les données de profilage.Par exemple : |
| Exception | console.exception affiche un message d'erreur. Elle fonctionne comme ` console.error `, mais nécessite au moins un argument et affiche en outre une trace de la pile de l'exécution JavaScript à l'endroit où elle est appelée. |
Il est également possible de passer une expression « logging category » en tant que premier argument à l’une de ces fonctions console. Pour plus de détails, consultez LoggingCategory.
Débogage des importations de modules
Définissez la variable d’environnement QML_IMPORT_TRACE pour activer les messages de débogage provenant des mécanismes de chargement des importations de QML.
Par exemple, pour un fichier QML simple comme celui-ci :
import QtQuick
Rectangle { width: 100; height: 100 }Si vous définissez QML_IMPORT_TRACE=1 avant d'exécuter l'outil «QML Runtime » ou votre application QML C++, vous obtiendrez une sortie similaire à celle-ci :
QQmlImportDatabase::addImportPath "/qt-sdk/imports"
QQmlImportDatabase::addImportPath "/qt-sdk/bin/QMLViewer.app/Contents/MacOS"
QQmlImportDatabase::addToImport 0x106237370 "." -1.-1 File as ""
QQmlImportDatabase::addToImport 0x106237370 "Qt" 4.7 Library as ""
QQmlImportDatabase::resolveType "Rectangle" = "QDeclarativeRectangle"Infrastructure de débogage QML
Le Qt Qml module fournit des services permettant de déboguer, d’inspecter et de profiler des applications via un port TCP ou un socket local.
Remarque : les plugins d qmltooling, indispensables au débogage et au profilage des applications QML sur les appareils, sont automatiquement installés lors de l’installation de Qt. Ils doivent être déployés sur les appareils pour que le débogage et le profilage fonctionnent.
Activation de l’infrastructure
Lorsque vous compilez votre application, vous devez activer explicitement l'infrastructure de débogage.
Si vous utilisez CMake, vous pouvez passer ` -DCMAKE_CXX_FLAGS_INIT=-DQT_QML_DEBUG ` en argument à ` cmake ` sur la ligne de commande pour l’activer uniquement pour une compilation spécifique. Vous pouvez également l’activer de manière permanente dans votre fichier `CMakeLists.txt` en ajoutant l’extrait de code suivant :
qt_add_executable(MyApp
...
)
target_compile_definitions(MyApp PRIVATE QT_QML_DEBUG)Si vous utilisez qmake, vous pouvez ajouter les paramètres de configuration « CONFIG+=qml_debug » au fichier « .pro » du projet ou les passer en argument sur la ligne de commande.
Si vous utilisez un autre système de compilation, vous devez transmettre la définition ` QT_QML_DEBUG ` au compilateur via les moyens fournis par ce système.
Remarque : l'activation de l'infrastructure de débogage peut compromettre l'intégrité de votre application et de votre système ; vous ne devez donc l'activer que dans un environnement contrôlé. Lorsque l'infrastructure est activée, l'application affiche l'avertissement suivant :
QML debugging is enabled. Only use this in a safe environment.
Lancement des applications
Pour activer le débogage – dès le démarrage ou pour y associer un débogueur ultérieurement –, lancez l'application avec les arguments suivants :
-qmljsdebugger=port:<port_from>[,port_to][,host:<ip address>][,block][,file:<local socket>][,services:<comma-separated list of services to enable>]
Où :
- l'argument obligatoire «
port_from» spécifie soit le port de débogage, soit le port de départ d’une plage de ports lorsque «port_to» est spécifié - l’
ip address, facultative, spécifie l’adresse IP de l’hôte sur lequel l’application s’exécute - l'
block, facultative, empêche l'application de s'exécuter tant que le client de débogage ne s'est pas connecté au serveur - l'
file, facultative, spécifie le socket local. - l’
services, facultatif, spécifie les services à activer ; par défaut, tous ceux qui sont détectés sont activés. Notez que le servicev4 debugdésactive le JIT.
Une fois l'application lancée avec succès, elle affiche le message suivant :
QML Debugger: Waiting for connection on port <port_number>
ou
QML Debugger: Connecting to socket at <file>
Connexion aux applications
Lorsque l’application est en cours d’exécution, un IDE ou un outil implémentant le protocole binaire peut se connecter au port ouvert.
Le débogage avec Qt Creator
Qt Creator utilise l’infrastructure de débogage pour déboguer, inspecter et profiler les applications QML aussi bien sur le bureau que sur des appareils distants. Qt Creator fournit des clients intégrés pour déboguer du JavaScript, inspecter l’arborescence des objets et profiler les activités d’un moteur QML. Pour plus d’informations, consultez Qt Creator: Débogage de projets Qt Quick .
Le débogage avec Qt Extension for Visual Studio Code
Qt Extension for Visual Studio Code fournit des clients intégrés pour le débogage de JavaScript et le profilage de l’activité du moteur QML. Pour plus d’informations, consultez Qt Extension for Visual Studio Code: Débogage d’applications Qt Quick .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.