Welche Software-Qt / QML-Stücke werden benötigt, um in einer App kompiliert zu werden, um QML debuggen / profilieren zu können?
Meine aktuelle App wird mit cmake erstellt und auf einem eingebetteten Gerät ausgeführt. Außerdem benutze ich Qt 4.8.3 (bis jetzt 4.7.0).
Ich möchte diese fancy / cool-Funktionen (für einen eingebetteten Entwickler) verwenden:
Ich habe durch qt-project nach Hilfe gesucht, aber ich habe nicht verstanden, welche Schritte benötigt werden, wenn Sie wollen Debuggen / Profilieren einer Remote-App mit einer benutzerdefinierten Build-Umgebung.
Also würde ich gerne wissen, ob es einen der folgenden Schritte benötigt, und im positiven Fall, was tatsächlich der benötigte Code ist.
Jede Hilfe, Link usw. ist willkommen.
Mit Qt 4.8 wurde das ziemlich einfach. Alle benötigten Bibliotheken sind jetzt Teil von Qt selbst und Sie müssen die Debug-Bibliothek für Ihre Qt-Version nicht selbst erstellen.
Ich entwickle eine Qt / QML-Desktop-Anwendung, die ebenfalls mit CMake erstellt wurde. Ich musste die folgenden Schritte ausführen, um das QML-Debugging zu aktivieren:
Fügen Sie den Debugging-Enabler in den Startcode meiner Anwendung ein
%Vor% Fügen Sie QML_DISABLE_OPTIMIZER=1
zur Ausführungsumgebung meiner Anwendung hinzu
Dies kann in Qt Creator in der Registerkarte "Ausführen" der Projektseite erfolgen.
Aktivieren Sie das Kontrollkästchen für das QML-Debugging, das Sie auch auf der Registerkarte "Ausführung" finden
Dadurch werden die erforderlichen Befehlszeilenparameter für die Kommunikation zwischen Qt Creator und der in die Anwendung eingebetteten QML-Debugger-Komponente hinzugefügt.
Wenn alles gut gelaufen ist, begrüßt Sie die Anwendung mit folgender Ausgabe, wenn sie im Debug-Modus gestartet wurde:
Qml-Debugging ist aktiviert. Verwenden Sie das nur in einer sicheren Umgebung!
QDeclarativeDebugServer: Warten auf Verbindung an Port 3768 ...
QDeclarativeDebugServer: Verbindung hergestellt
Danach konnte ich Breakpoints setzen und Variablen überprüfen. Auch der Profiler, auf den über die Analyseseite zugegriffen werden kann, hat einfach funktioniert.
Ihr Fall ist offensichtlich ein wenig komplizierter als die Entwicklung einer eingebetteten Anwendung.
Qt Creator unterstützt keine CMake-basierten Projekte auf eingebetteten Plattformen. Sie müssen das selbst tun. Vergessen Sie nicht, die erforderlichen Argumente an Ihre Anwendung zu übergeben, um das QML-Debugging zu konfigurieren:
%Vor%Um Qt Creator an eine Remote-Anwendung für eine Profilerstellungssitzung anzuhängen, verwenden Sie die entsprechenden "Extern" -Einträge im Menü "Analysieren" im Qt Creator-Hauptmenü. Wo ist auch eine Option zum Debuggen mit "Connect to Debug-Server" unter "Debug" & gt; "Debuggen".
Das Überprüfen der Dokumente aller gegebenen Antworten scheint unnötig zu sein. Außerdem codiert es Debug-Code in Releases. Ich habe keine Ahnung, warum QQmlDebuggingEnabler
notwendig wäre, aber wenn Sie den Code hier <überprüfen / a> und hier , erkennen Sie, dass die installation von QQmlDebuggingEnabler
ist nicht notwendig. Fügen Sie einfach QQmlDebuggingEnabler
ein und setzen Sie das QT_QML_DEBUG
Flag, z. so (CMake)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG ")
Allerdings ist laut den Dokumenten QQmlDebuggingEnabler
nicht erforderlich.
Fuermore: Profiling unoptimierten Code macht keinen Sinn.
Wenn ich QT_QML_DEBUG
als Flag setze und das Kontrollkästchen für das QML-Debugging ankreuze, reicht es aus.
Hier ist eine "sauberere" Alternative zu @ sebasgos Antwort , Punkt 1.
Wenn Sie Qt5 mit QtQuick2 verwenden, müssen Sie nur QT_QML_DEBUG
vor dem Einfügen von QtQuick
in eine Datei definieren (es spielt keine Rolle welche Datei, solange sie Teil der ausführbaren Datei ist). Zum Beispiel ist es ausreichend, Ihre main.cpp
mit Zeilen zu beginnen:
Es wird nicht schaden, wenn Sie stattdessen das -DQT_QML_DEBUG
-Flag des Compilers verwenden (zB über qmake DEFINES oder cmake add_definitions -Direktiven ), möglicherweise nur in Debug-Builds.
Wenn Sie mit dem veralteten QtQuick1 (in Qt5 oder Qt4) nicht weiter arbeiten, verwenden Sie stattdessen das Makro QT_DECLARATIVE_DEBUG
, z. B.
Für Neugierige, hier ist eine relevante Qt-Quelle, kurz und selbsterklärend:
Mit Qt 5.1 wurde die neue Funktion qInstallMessageHandler hinzugefügt. Damit können Sie Fehler und Warnungen abfangen und protokollieren, sodass Sie mit ihnen nach Belieben arbeiten können.