Профиль QT, приложение QML, в системе Linux (плата DaVinci) - PullRequest
0 голосов
/ 08 июля 2019

Добрый вечер, я унаследовал проект, созданный с использованием QT Creator (C ++ и Qt Quick).Цель - плата DaVinci DM8168 с ** ядром Linux 2.6.37 ** на ней.

В частности, я использую Qt Creator 4.2.0 (4.2.0) на основе Qt 5.7.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64-разрядная версия)

Я могу создать и запустить приложение для цели и вижу еговыполняется.

Мне нужно запустить профилировщик .Но это не работает.Когда я запускаю приложение (на цели), используя параметр:

qmljsdebugger=port:xxxx

, тогда приложение больше не запускается!

Я пытался добавить эти параметры в файл .pro проекта:

DEFINES   ''    +=  QMLJSDEBUGGER         
DEFINES   ''    +=  QT_DECLARATIVE_DEBUG   
PACKAGECONFIG_append = " qml-debug"

Я, очевидно, строю в режиме отладки.

Когда я пытаюсь запустить аппликатив на цели, я получаю это сообщение:

Отладка QMLвключен.Используйте это только в безопасной среде.Процесс прерван сигналом

Я повторяю: если опция "qmljsdebugger = port: xxxx" удалена, приложение запускается и работает правильно ... но, конечно, профилировщик не будет подключаться в этом случае.

Как я уже сказал, я унаследовал проект и совершенно новый для этой среды.

Любая помощь или предложение?

update

теперь это строки, которые я добавил в .pro файл

DEFINES   ''    +=  QMLJSDEBUGGER
DEFINES   ''    +=  QT_QML_DEBUG
CONFIG          +=  qml_debug

Я проверил различные пути для QT и экспортировал PATH и LD_LIBRARY_PATH.К сожалению, ничего не меняется: если я запускаю свою программу, используя:

  /opt/MyPrefix/MyProgram -platform eglfs 

, тогда она работает.

, если я использую:

   /opt/MyPrefix/MyProgram -qmljsdebugger=port:3456 -platform eglfs 

, то происходит сбой

Отладка QML включена.Используйте это только в безопасной среде.Ошибка сегментации

программа запускается в режиме отладки, и это нормально.Проблема в профилировщике: (*

ps: Насколько я знаю, на цели не запущены брандмауэры. Я лучше проверю.

update 2

Я попробовал те же решения, что и выше, но на простой программе, как было предложено (в основном "hello world"), и она не падает, когда указана опция "-qmljsdebugger = port: 3456" ... Я действительно не знаюв чем проблема в моем исходном приложении.

1 Ответ

0 голосов
/ 08 июля 2019

Во-первых, есть несколько предпосылок для запуска отладки qml, например, уверенность в том, что Qt был собран с точно такой же цепочкой инструментов, что и двоичный файл. Вы должны взглянуть на Qt Wiki: https://wiki.qt.io/How_To_Profile_QML_App_on_Embedded_Device

Важным примечанием является то, что в Qt Quick 1 и Qt Quick 2 изменились способы работы с qml-отладкой. Поскольку вы используете Qt 5, я считаю, что вы должны использовать Qt Quick 2. Так что это означает, что вы не должны использовать QT_DECLARATIVE_DEBUG, но QT_QML_DEBUG.

Подробнее: https://doc.qt.io/qt-5/qtquick-debugging.html#qml-debugging-infrastructure

Если у вас все еще есть проблема после использования правильных DEFINES и проверки того, что всякое предварительное условие выполнено, то вам следует попробовать с базовой программой Qt, которая ничего не делает, но отображает простой элемент QML (например, Rectangle или Button) и посмотрите, если у вас все еще есть проблема.

...