En esta página

Depuración de aplicaciones QML

Cuando desarrolle una aplicación con QML, existen muchas formas de depurar los posibles problemas a los que pueda enfrentarse. Las secciones siguientes describen las herramientas de depuración disponibles y cómo utilizarlas.

API de consola

FunciónDescripción
RegistroUtilice console.log, console.debug, console.info, console.warn, o console.error para imprimir información de depuración en la consola.

Por ejemplo

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

La salida se genera utilizando los métodos qCDebug, qCWarning, o qCCritical en C++, con una categoría de qml o js, dependiendo del tipo de archivo que realice el registro.

Véase también Técnicas de depuración.

Assertconsole.assert comprueba que una expresión es verdadera. Si no lo es, escribe un mensaje opcional en la consola e imprime el seguimiento de la pila.

Por ejemplo:

function f() {
  var x = 12
  console.assert(x == 12, "This will pass");
  console.assert(x > 12, "This will fail");
}
Los temporizadoresconsole.time y console.timeEnd registran el tiempo (en milisegundos) transcurrido entre las llamadas. Ambos toman un argumento de cadena que identifica la medida.

Por ejemplo:

function f() {
    console.time("wholeFunction");
    console.time("firstPart");
    // first part
    console.timeEnd("firstPart");
    // second part
    console.timeEnd("wholeFunction");
}
Trazaconsole.trace imprime la traza de la pila de la ejecución de JavaScript en el punto en el que se llamó. Esta información contiene el nombre de la función, el nombre del archivo, el número de línea y el número de columna. El seguimiento de la pila se limita a los 10 últimos marcos de pila.
Recuentoconsole.count muestra el número de veces que se ha ejecutado un determinado fragmento de código, junto con un mensaje.

Por ejemplo:

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

El ejemplo de código anterior muestra f called: 1, f called: 2... cada vez que se ejecuta f().

El perfilconsole.profile activa los perfiladores QML y JavaScript. Las llamadas anidadas no están soportadas e imprime una advertencia en la consola.
PerfilFinconsole.profileEnd desactiva los perfiles QML y JavaScript. La llamada a esta función sin una llamada previa a console.profile muestra una advertencia en la consola. Es necesario adjuntar un cliente de perfiles antes de esta llamada para recibir y almacenar los datos de perfiles.

Por ejemplo

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();
}
Excepciónconsole.exception imprime un mensaje de error. Funciona como console.error pero requiere al menos un argumento y, además, imprime una traza de la pila de la ejecución de JavaScript en el punto en el que se llama.

Alternativamente, se puede pasar un logging category como primer argumento a cualquiera de estas funciones console. Consulte LoggingCategory para obtener más información.

Importación de módulos de depuración

Establezca la variable de entorno QML_IMPORT_TRACE para habilitar la salida de depuración de los mecanismos de carga de importaciones de QML.

Por ejemplo, para un archivo QML simple como este:

import QtQuick

Rectangle { width: 100; height: 100 }

Si establece QML_IMPORT_TRACE=1 antes de ejecutar la herramientaQML Runtime o su aplicación QML C++, verá una salida similar a:

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"

Infraestructura de depuración QML

El módulo Qt Qml proporciona servicios para depurar, inspeccionar y crear perfiles de aplicaciones a través de un puerto TCP o un socket local.

Nota: Los plugins qmltooling necesarios para depurar y crear perfiles de aplicaciones QML en dispositivos se instalan automáticamente durante la instalación de Qt. Deben desplegarse en los dispositivos para que funcionen la depuración y la creación de perfiles.

Habilitación de la infraestructura

Cuando compiles tu aplicación, debes habilitar explícitamente la infraestructura de depuración. Si utilizas qmake, puedes añadir los parámetros de configuración de CONFIG+=qml_debug al archivo del proyecto .pro.

Si utilizas otro sistema de compilación, puedes pasar la definición QT_QML_DEBUG al compilador:

Nota: Habilitar la infraestructura de depuración puede comprometer la integridad de tu aplicación y sistema, por lo que sólo deberías habilitarla en un entorno controlado. Cuando la infraestructura está habilitada, la aplicación muestra la siguiente advertencia:
QML debugging is enabled. Only use this in a safe environment.

Inicio de aplicaciones

Para habilitar la depuración -desde el principio o para conectar un depurador más tarde- inicie la aplicación con los siguientes argumentos:

-qmljsdebugger=port:<port_from>[,port_to][,host:<ip address>][,block][,file:<local socket>][,services:<comma-separated list of services to enable>]

Donde

  • el obligatorio port_from especifica el puerto de depuración o el puerto de inicio de un rango de puertos cuando se especifica port_to
  • el opcional ip address especifica la dirección IP del host donde se ejecuta la aplicación
  • el opcional block impide que la aplicación se ejecute hasta que el cliente de depuración se conecte al servidor
  • la opción file especifica el socket local.
  • el opcional services especifica los servicios a habilitar; por defecto son todos los que se encuentran. Tenga en cuenta que el servicio v4 debug desactiva el JIT.

Una vez que la aplicación se ha iniciado correctamente, muestra el siguiente mensaje:

QML Debugger: Waiting for connection on port <port_number>

o

QML Debugger: Connecting to socket at <file>

Conexión a aplicaciones

Cuando la aplicación se está ejecutando, un IDE o una herramienta que implemente el protocolo binario puede conectarse al puerto abierto.

Depuración con Qt Creator

Qt Creator utiliza la infraestructura de depuración para depurar, inspeccionar y perfilar aplicaciones QML tanto en el escritorio como en dispositivos remotos. Qt Creator proporciona clientes integrados para depurar JavaScript, inspeccionar el árbol de objetos y perfilar las actividades de un motor QML. Para obtener más información, consulte Qt Creator: Depuración de proyectos Qt Quick .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.