调试QML应用

Console API

Log

console.log, console.debug, console.info, console.warnconsole.error 可以用来打印输出调试信息到console.。比如:

function f(a, b) {
  console.log("a is ", a, "b is ", b);
}


这个输出是用使用Qt C++中的qDebug, qWarning, qCritical 方法(可以参考http://doc.qt.nokia.com/latest/debug.html#warning-and-debugging-messages)。

设置环境变量QML_CONSOLE_EXTENDED也将输出在源码中的调用。

Assert

console.assert 是用来测试表达式是真或是否。如果不是真,它将输出一个可选的输出信息到console中,并打印出stack trace。


function f() {

  var x = 12
  console.assert(x == 12, "This will pass");
  console.assert(x > 12, "This will fail");
}

Timer

console.time 及 console.timeEnd 用来记录以毫秒计算的在调用函数之间所花费的时间。两个都带有一个字符串参数来标示测量时间。比如:

function f() {
    console.time("wholeFunction");
    console.time("firstPart");
    // first part
    console.timeEnd("firstPart");
    // second part
    console.timeEnd("wholeFunction");
}

Trace

console.trace 用来打印Javascript在被执行时当前代码的stack trace。 stack trace 的信息含有函数的名称,文件名称,代码行的数字及列数。 stack trace 仅限于最后的10个stack frames.

Count

console.count 用来输出输出某个特别代码已经被执行多少次,同时显示一个信息。

function f() {
  console.count("f called");
}

上述代码将输出 f called: 1, f called: 2 ... 无论 f() 在任何时候被执行。

Profile

console.profile 启动 QML 及 JavaScript profilers。嵌套的调用不被支持。如果是这样的情况,一个警告的信息将被输出到console。

console.profileEnd 关掉QML及JavaScript profilers。在没有调用console.profile的情况下,调用这个函数将输出一个警告信息到console。一个profiling的客户端应该在调用这个函数之前已经连接起来以使得这个函数能够接受并存储profiling的数据。比如:

function f() {
    console.profile();
    //Call some function that needs to be profiled.
    //Ensure that a client is attached before ending
    //the profiling session.
    console.profileEnd();
}

Exception

console.exception 用来输出一个错误的信息并生成在Javascript代码被执行处的stack trace。

Debugging module imports

QML_IMPORT_TRACE 环境变量可以用来被设置为启动输出来自QML的import loading机制的调试信息。

比如,一个简单的QML文件:

import QtQuick 2.0
Rectangle { width: 100; height: 100 }

如果你设置QML_IMPORT_TRACE=1,之后运行QML Scene (or或是你的QML C++应用),你将看到类似如一下的输出:

QQmlImportDatabase::addImportPath "/qt-sdk/imports"

QQmlImportDatabase::addImportPath "/qt-sdk/bin/QMLViewer.app/Contents/MacOS"
QQmlImportDatabase::addToImport 0x106237370 "." -1.-1 File as ""
QQmlImportDatabase::addToImport 0x106237370 "Qt" 4.7 Library as ""
QQmlImportDatabase::resolveType "Rectangle" = "QDeclarativeRectangle"

Debugging with Qt Creator

Qt Creator 提供了一个集成好的QML调试工具。QML项目及单独的C++应用程序(使用QML)可以在desktop或是在remote装置上(比如说是用USB连接的手机)。关于这方面的更多信息请参阅Qt Creator使用手册。


你可能感兴趣的:(调试QML应用)