Meego Wiki
Views

User:Sabotage/QML Debugging

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Environment variables)
(Environment variables)
Line 1: Line 1:
-
==Environment variables==
+
=Environment variables=
Try enabling (setting to non-zero value) in the environment before launching your QML app to get all kinds of interesting data about the runtime execution and data related to your QML app.
Try enabling (setting to non-zero value) in the environment before launching your QML app to get all kinds of interesting data about the runtime execution and data related to your QML app.
-
*QML_SHOW_FRAMERATE
+
==QML_SHOW_FRAMERATE==
-
*: Dump stats during painting events, for example:
+
Dump stats during painting events, for example:
 +
...
  Debug: paintEvent: 13 time since last frame: 36
  Debug: paintEvent: 13 time since last frame: 36
-
*QML_ENABLE_TEXT_IMAGE_CACHE
+
...
-
*: TBD (please describe what this does if you know)
+
==QML_ENABLE_TEXT_IMAGE_CACHE==
-
*QML_BINDINGS_DUMP
+
TBD (please describe what this does if you know)
-
*: Report details about various bindings between elements, for example:
+
==QML_BINDINGS_DUMP==
 +
Report details about various bindings between elements, for example:
  ...
  ...
  Warning: Program.bindings: 1  
  Warning: Program.bindings: 1  
Line 23: Line 25:
  ...
  ...
: If you know how to use/interpret this data, please add that info here, or link to someplace that does.
: If you know how to use/interpret this data, please add that info here, or link to someplace that does.
-
*QML_COMPILER_DUMP
+
==QML_COMPILER_DUMP==
-
*: Report runtime compiler operations and data per .qml parsed, for example:
+
Report runtime compiler operations and data per .qml parsed, for example:
  ...
  ...
  Warning: -------------------------------------------------------------------------------
  Warning: -------------------------------------------------------------------------------
Line 43: Line 45:
  ...
  ...
: If you have good ideas on how to use this data, please add that info here, or link to someplace that does.
: If you have good ideas on how to use this data, please add that info here, or link to someplace that does.
-
*QML_COMPILER_STATS
+
==QML_COMPILER_STATS==
-
*: Reports various statistics about components (objects, IDs, bindings) for each .qml parsed, for example:
+
Reports various statistics about components (objects, IDs, bindings) for each .qml parsed, for example:
 +
...
  Warning: QML Document: "file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml"
  Warning: QML Document: "file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml"
  Warning:    Component Line 100
  Warning:    Component Line 100
Line 67: Line 70:
  Warning:        QScript Bindings:  8
  Warning:        QScript Bindings:  8
  Warning:            (82:40) (45:40) (141:16) (46:38) (159:17) (203:38) (158:25) (47:40)
  Warning:            (82:40) (45:40) (141:16) (46:38) (159:17) (203:38) (158:25) (47:40)
 +
...
: If you have good ideas on how to use this data, please add that info here, or link to someplace that does.
: If you have good ideas on how to use this data, please add that info here, or link to someplace that does.
-
*QML_REWRITE_DUMP
+
==QML_REWRITE_DUMP==
-
*: Reports out all the rewritten code during the parsing phase, for example:
+
Reports out all the rewritten code during the parsing phase, for example:
 +
...
  Warning: =============================================================
  Warning: =============================================================
  Warning: Rewrote:
  Warning: Rewrote:
Line 76: Line 81:
  Warning: (function $panelStatusBarOpacity() { return (typeof theme_panelStatusBarOpacity == "undefined") ? 0.4 : theme_panelStatusBarOpacity })
  Warning: (function $panelStatusBarOpacity() { return (typeof theme_panelStatusBarOpacity == "undefined") ? 0.4 : theme_panelStatusBarOpacity })
  Warning: =============================================================
  Warning: =============================================================
-
*QML_EXPERIMENTAL
+
...
-
*: TBD (please describe what this does if you know)
+
==QML_EXPERIMENTAL==
-
*QML_DISABLE_FAST_PROPERTIES
+
TBD (please describe what this does if you know)
-
*: TBD (please describe what this does if you know)
+
==QML_DISABLE_FAST_PROPERTIES==
-
*QML_DISABLE_OPTIMIZER
+
TBD (please describe what this does if you know)
-
*: TBD (please describe what this does if you know)
+
==QML_DISABLE_OPTIMIZER==
-
*QML_XHR_DUMP
+
TBD (please describe what this does if you know)
-
*: TBD (please describe what this does if you know)
+
==QML_XHR_DUMP==
-
*QML_IMPORT_TRACE
+
TBD (please describe what this does if you know)
-
*: Dump details on the import actions being taken, including which Types are "resolved" by with imported qml files.  Helps to trace unexpected results to possible namespace collision and/or search path order issues.  For example:
+
==QML_IMPORT_TRACE==
 +
Dump details on the import actions being taken, including which Types are "resolved" by with imported qml files.  Helps to trace unexpected results to possible namespace collision and/or search path order issues.  For example:
  ...
  ...
  Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::addImport: "MeeGo.Components" 0.1 Library as ""
  Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::addImport: "MeeGo.Components" 0.1 Library as ""
Line 107: Line 113:
  Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml)::addImport: "." -1.-1 File as ""
  Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml)::addImport: "." -1.-1 File as ""
  ...
  ...
-
*QML_IMPORT_PATH
+
==QML_IMPORT_PATH==
-
*: Alter the paths search to resolve "import" directives
+
Alter the paths search to resolve "import" directives
-
*QML_CHECK_TYPES
+
==QML_CHECK_TYPES==
-
*: Enable stricter type checking, reporting and debugging, for example:
+
Enable stricter type checking, reporting and debugging, for example:
 +
...
  Warning: file:///usr/share/meego-app-test/main.qml:29:1: Type Window unavailable
  Warning: file:///usr/share/meego-app-test/main.qml:29:1: Type Window unavailable
       Window {
       Window {
Line 118: Line 125:
           ^
           ^
  Debug: Raising window
  Debug: Raising window
 +
...

Revision as of 19:21, 21 July 2011

Contents

Environment variables

Try enabling (setting to non-zero value) in the environment before launching your QML app to get all kinds of interesting data about the runtime execution and data related to your QML app.

QML_SHOW_FRAMERATE

Dump stats during painting events, for example:

...
Debug: paintEvent: 13 time since last frame: 36
...

QML_ENABLE_TEXT_IMAGE_CACHE

TBD (please describe what this does if you know)

QML_BINDINGS_DUMP

Report details about various bindings between elements, for example:

...
Warning: Program.bindings: 1 
Warning: Program.dataLength: 28 
Warning: Program.subscriptions: 1 
Warning: Program.indentifiers: 0 
Warning: 	Skip			-1	0
Warning: 121:31:
Warning: 	LoadScope		0	0
Warning: 	FetchAndSubscribe	0	0	0
Warning: 	Store			0	16	0
Warning: 	Done
...
If you know how to use/interpret this data, please add that info here, or link to someplace that does.

QML_COMPILER_DUMP

Report runtime compiler operations and data per .qml parsed, for example:

...
Warning: -------------------------------------------------------------------------------
Warning: "file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml"
Warning: Index  Line    Operation               Data1   Data2   Data3   Comments
Warning: -------------------------------------------------------------------------------
Warning: 0      0       INIT                    33      16      0       0
Warning: 1      43      CREATE                  0       -1              "Item"
Warning: 2      0       STORE_META              1
Warning: 3      0       SETID                   0                       "container"
Warning: 4      43      BEGIN                   16
Warning: 5      47      STORE_BINDING   4       3       0
Warning: 6      66      CREATE_SIMPLE           12
Warning: 7      0       DEFER                   8
Warning: 8      0       INIT                    33      16      -1      -1
Warning: 9      67      CREATE_SIMPLE           20
Warning: 10     67      BEGIN                   12
...
If you have good ideas on how to use this data, please add that info here, or link to someplace that does.

QML_COMPILER_STATS

Reports various statistics about components (objects, IDs, bindings) for each .qml parsed, for example:

...
Warning: QML Document: "file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml"
Warning:     Component Line 100
Warning:         Total Objects:      5
Warning:         IDs Used:           3
Warning:         Optimized Bindings: 1
Warning:             (121:31)
Warning:         QScript Bindings:   6
Warning:             (112:20) (127:24) (114:20) (103:16) (113:21) (125:33)
Warning:     Component Line 242
Warning:         Total Objects:      1
Warning:         IDs Used:           0
Warning:         Optimized Bindings: 0
Warning:         QScript Bindings:   0
Warning:     Component Line 43
Warning:         Total Objects:      24
Warning:         IDs Used:           13
Warning:         Optimized Bindings: 25
Warning:             (200:24) (187:17) (75:23) (68:23) (163:23) (176:17) (261:23) (147:21) (151:21) (140:23)
            (142:18) (189:18) (155:27) (204:31) (175:24) (168:27) (256:17) (145:23) (185:24) (156:17)
            (255:24) (165:15) (169:18) (188:16) (160:18)
Warning:         QScript Bindings:   8
Warning:             (82:40) (45:40) (141:16) (46:38) (159:17) (203:38) (158:25) (47:40)
...
If you have good ideas on how to use this data, please add that info here, or link to someplace that does.

QML_REWRITE_DUMP

Reports out all the rewritten code during the parsing phase, for example:

...
Warning: =============================================================
Warning: Rewrote:
Warning: (typeof theme_panelStatusBarOpacity == "undefined") ? 0.4 : theme_panelStatusBarOpacity
Warning: To:
Warning: (function $panelStatusBarOpacity() { return (typeof theme_panelStatusBarOpacity == "undefined") ? 0.4 : theme_panelStatusBarOpacity })
Warning: =============================================================
...

QML_EXPERIMENTAL

TBD (please describe what this does if you know)

QML_DISABLE_FAST_PROPERTIES

TBD (please describe what this does if you know)

QML_DISABLE_OPTIMIZER

TBD (please describe what this does if you know)

QML_XHR_DUMP

TBD (please describe what this does if you know)

QML_IMPORT_TRACE

Dump details on the import actions being taken, including which Types are "resolved" by with imported qml files. Helps to trace unexpected results to possible namespace collision and/or search path order issues. For example:

...
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::addImport: "MeeGo.Components" 0.1 Library as ""
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml::importExtension: loaded "/usr/lib/qt4/imports/MeeGo/Components/qmldir"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-components-datetime.so"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-components-indicators.so"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-kernel.so"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-models.so"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-units.so"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Components" from "/usr/lib/qt4/imports/MeeGo/Components/libmeego-ux-gestures.so"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::resolveType: "Item" => "QDeclarativeItem"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::resolveType: "Theme" => QUrl("file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel/Theme.qml")
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel/Theme.qml)::addImport: "." -1.-1 File as ""
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel/Theme.qml::importExtension: loaded "/usr/lib/qt4/imports/MeeGo/Ux/Kernel/qmldir"
Debug: QDeclarativeImportDatabase::importPlugin: "MeeGo.Ux.Kernel" from "/usr/lib/qt4/imports/MeeGo/Ux/Kernel/libmeego-ux-kernel.so"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel/Theme.qml)::addImport: "Qt" 4.7 Library as ""
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel/Theme.qml)::resolveType: "Item" => "QDeclarativeItem"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::resolveType: "Translator" => "Translator"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::resolveType: "Rectangle" => "QDeclarativeRectangle"
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml)::resolveType: "StatusBar" => QUrl("file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml")
Debug: QDeclarativeImports(file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Indicators/StatusBar.qml)::addImport: "." -1.-1 File as ""
...

QML_IMPORT_PATH

Alter the paths search to resolve "import" directives

QML_CHECK_TYPES

Enable stricter type checking, reporting and debugging, for example:

...
Warning: file:///usr/share/meego-app-test/main.qml:29:1: Type Window unavailable
     Window {
     ^
Warning: file:///usr/lib/qt4/imports/MeeGo/Ux/Components/Common/Window.qml:441:5: Theme is ambiguous. Found in file:///usr/lib/qt4/imports/MeeGo/Components and in file:///usr/lib/qt4/imports/MeeGo/Ux/Kernel
         Theme { id: theme }
         ^
Debug: Raising window
...
Personal tools