Comment Qt, Qml débogage et/ou de profilage?
Ce logiciel Qt/QML pièces sont nécessaires pour compiler une application, pour être en mesure de debug/profil QML?
Mon application actuelle est de construire à l'aide de cmake et s'exécute sur un périphérique intégré. Par ailleurs, je commence à utiliser Qt 4.8.3 (jusqu'à maintenant, 4.7.0).
Je voudrais utiliser ces fantaisie/fonctionnalités sympas (pour un développeur embarqué):
http://doc.qt.digia.com/qtcreator/creator-qml-performance-monitor.html
J'ai cherché creux qt-project à la recherche de l'aide, mais je n'ai pas clairement quelles sont les étapes nécessaires lorsque vous souhaitez déboguer/profil un remote app, avec un personnaliser l'environnement de compilation.
Donc, je voudrais savoir si il est nécessaire de les étapes suivantes, et dans le cas positif, ce qui est en fait le besoin de code.
- Bibliothèques Qt ./configurer des options spécifiques.
- QtCreator des options spécifiques pour attacher/lancement à distance app.
- Cmake comprend et les bibliothèques nécessaires dans le final de l'application exécutable .
Toute aide, lien, etc sont les bienvenus.
OriginalL'auteur kikeenrique | 2012-11-13
Vous devez vous connecter pour publier un commentaire.
Avec Qt 4.8 c'est assez facile. Toutes les bibliothèques requises sont maintenant une partie de Qt lui-même et vous n'avez pas à construire le débogage de la bibliothèque pour votre Qt version de vous-même.
Je suis le développement de Qt/QML application de bureau a également construit avec CMake. J'ai eu à effectuer les étapes suivantes pour activer QML débogage:
Inclure le débogage de catalyseur dans ma demande de démarrage du code
Ajouter
QML_DISABLE_OPTIMIZER=1
à l'environnement d'exécution de mon applicationCeci peut être fait dans Qt Creator dans l'onglet exécution de la page des projets.
Cochez la case pour QML débogage retrouve également dans l'onglet exécution
Cela s'ajoute la nécessaire paramètres de ligne de commande pour la communication entre Qt Creator et le QML composant débogueur intégré dans l'application
Si tout s'est bien passé, l'application vous accueille avec la sortie suivante s'il est lancé en mode debug:
Après que j'ai été en mesure de définir des points d'arrêt et d'inspecter les variables. Aussi le profiler accessible via la page analyser simplement travaillé.
Votre cas est évidemment un peu plus compliqué que votre développement d'une application embarquée.
Qt creator n'a pas de support pour le déploiement et l'exécution de CMake-projets basés sur des plateformes embarquées. Vous aurez à faire vous-même. N'oubliez pas de passer les arguments requis pour votre application afin de configurer le QML débogage:
À joindre Qt Creator à distance d'une application en cours d'exécution pour une session de profilage utilisez le raccourci "Externes", les entrées dans les "Analyser" dans le menu d'Qt Creator menu principal. Où est une même option pour le débogage avec "Connect to Debug-Serveur", en "Debug" > "Debug".
Je n'ai pas vu ce message moi, bug il semble que vous essayez de faire de débogage/profil même instance d'application deux fois et c'est maintenant autorisé. Je ne peux pas vous aider là-bas parce que ce n'est pas le cas avec mon application de bureau.
OriginalL'auteur sebasgo
Je suis à l'aide de Qt 5, et il est devenu encore plus facile. Que cette étape a été nécessaire de mon côté à faire QML profilage:
Très difficile à dire... je vous suggère d'ouvrir une nouvelle question à ce problème et bien d'autres informations...
OriginalL'auteur Jan Rüegg
Ici est un "nettoyeur" alternative à @sebasgo réponse, point 1.
Si vous utilisez Qt5 avec QtQuick2, vous avez seulement besoin de définir
QT_QML_DEBUG
avant, y comprisQtQuick
dans un fichier (n'importe quel fichier, aussi longtemps que c'est une partie de l'exécutable). Par exemple, il suffit de démarrer votremain.cpp
avec les lignes:Il ne fera pas de mal si vous utilisez à la place du compilateur
-DQT_QML_DEBUG
drapeau (par exemple, par qmake DÉFINIT ou cmake add_definitions directives), peut-être seulement dans les versions debug.Si vous êtes coincé avec l'héritage QtQuick1 (en Qt5 ou Qt4) utilisation
QT_DECLARATIVE_DEBUG
macro au lieu de cela, par exemple,Pour les curieux, en voici un Qt source, court et explicite:
OriginalL'auteur Ilia K.
La vérification de la docs tous donné les réponses semblent être inutiles. De plus, il code en dur code de débogage dans les rejets. Je n'ai aucune idée de pourquoi
QQmlDebuggingEnabler
serait nécessaire, mais si vous examinez le code ici et ici, vous reconnaîtrez que le instatiation deQQmlDebuggingEnabler
est pas nécessaire. Il suffit d'inclureQQmlDebuggingEnabler
et définir laQT_QML_DEBUG
drapeau comme ceci (CMake)set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG ")
Cependant, selon le docs
QQmlDebuggingEnabler
n'est pas nécessaire.Furtermore: profilage unoptimized code n'a aucun sens.
Pour moi réglage
QT_QML_DEBUG
comme le drapeau et en cochant la case pour QML, le débogage est suffisante.OriginalL'auteur ManuelSchneid3r
Avec Qt 5.1 la nouvelle fonction qInstallMessageHandler a été ajouté.
Il vous permettra de les attraper et de les consigner, les erreurs et les avertissements de sorte que vous pouvez traiter avec eux comme vous le souhaitez.
Aussi, cela ne fonctionne pas pour QML sans changement...
OriginalL'auteur Jay