Wie Qt - Qml Debugging und / oder Profiling?

8

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.

  • Qt-Bibliotheken ./ konfigurieren spezifische Optionen.
  • QtCreator spezifische Optionen zum Anhängen / Starten an Remote-App.
  • Cmake Includes und Bibliotheken, die in der endgültigen ausführbaren App benötigt werden.

Jede Hilfe, Link usw. ist willkommen.

    
kikeenrique 13.11.2012, 18:26
quelle

5 Antworten

12

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:

  1. Fügen Sie den Debugging-Enabler in den Startcode meiner Anwendung ein

    %Vor%
  2. 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.

  3. 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".

    
sebasgo 18.11.2012, 12:15
quelle
6

Ich benutze Qt 5 und es wurde noch einfacher. Nur dieser eine Schritt war auf meiner Seite erforderlich, um QML-Profiling durchzuführen:

%Vor%     
Jan Rüegg 09.08.2013 16:15
quelle
3

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.

    
ManuelSchneid3r 21.01.2016 15:13
quelle
2

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:

%Vor%

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.

%Vor%

Für Neugierige, hier ist eine relevante Qt-Quelle, kurz und selbsterklärend:

Ilia K. 16.06.2013 16:16
quelle
-2

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.

    
Jay 22.07.2013 16:59
quelle

Tags und Links