2016-03-31 14 views
10

Sto utilizzando Qt 5.6 su Fedora 23 e ho notato che console.log() e console.debug() non scrivono nulla per console. Il mio codice di esempio:QML console.log() e console.debug() non scrivono alla console

import QtQuick 2.6 
import QtQuick.Window 2.2 

Window { 
    visible: true 

    Text { 
     text: qsTr("Hello World") 
     anchors.centerIn: parent 

     Component.onCompleted: { 
      console.warn("warn completed") 
      console.log("log completed") 
      console.error("error completed") 
      console.debug("debug completed") 
      console.exception("exception completed") 
      console.info("info completed") 
     } 
    } 
} 

stampe alla console:

QML debugging is enabled. Only use this in a safe environment. 
qml: warn completed 
qml: error completed 
qml: exception completed 
onCompleted (qrc:/main.qml:16) 
qml: info completed 

così warn, error, exception e info funzionano bene. Che cosa sto facendo di sbagliato?

Modifica # 1: progetto è appena creato, tutte le mie fonti:

Main.cpp

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

    return app.exec(); 
} 

project.pro

TEMPLATE = app 

QT += qml quick 
CONFIG += c++11 

SOURCES += main.cpp 

RESOURCES += qml.qrc 

# Additional import path used to resolve QML modules in Qt Creator's code model 
QML_IMPORT_PATH = 

# Default rules for deployment. 
include(deployment.pri) 

Edit # 2: la determinazione della produzione da Qt Creator mostra che non ci sono QT_NO_DEBUG_OUTPUT, QT_NO_INFO_OUTPUT o QT_NO_WARNING_OUTPUT:

14:43:36: Running steps for project project... 
14:43:36: Configuration unchanged, skipping qmake step. 
14:43:36: Starting: "/usr/bin/make" 
g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../project -I. -I../../Qt5.6.0/5.6/gcc_64/include -I../../Qt5.6.0/5.6/gcc_64/include/QtQuick -I../../Qt5.6.0/5.6/gcc_64/include/QtGui -I../../Qt5.6.0/5.6/gcc_64/include/QtQml -I../../Qt5.6.0/5.6/gcc_64/include/QtNetwork -I../../Qt5.6.0/5.6/gcc_64/include/QtCore -I. -I../../Qt5.6.0/5.6/gcc_64/mkspecs/linux-g++ -o main.o ../project/main.cpp 
/home/krzys/Qt5.6.0/5.6/gcc_64/bin/rcc -name qml ../project/qml.qrc -o qrc_qml.cpp 
g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../project -I. -I../../Qt5.6.0/5.6/gcc_64/include -I../../Qt5.6.0/5.6/gcc_64/include/QtQuick -I../../Qt5.6.0/5.6/gcc_64/include/QtGui -I../../Qt5.6.0/5.6/gcc_64/include/QtQml -I../../Qt5.6.0/5.6/gcc_64/include/QtNetwork -I../../Qt5.6.0/5.6/gcc_64/include/QtCore -I. -I../../Qt5.6.0/5.6/gcc_64/mkspecs/linux-g++ -o qrc_qml.o qrc_qml.cpp 
g++ -Wl,-z,origin -Wl,-rpath,\$ORIGIN -Wl,-rpath,/home/krzys/Qt5.6.0/5.6/gcc_64/lib -o project main.o qrc_qml.o -L/home/krzys/Qt5.6.0/5.6/gcc_64/lib -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGL -lpthread 
14:43:37: The process "/usr/bin/make" exited normally. 
14:43:37: Elapsed time: 00:01. 
+0

hai costruito nel rilascio o modalità di debug? info/debug sono tradotti in qDebug, penso, che può essere disattivato quando è integrato nella modalità di rilascio. –

+0

Secondo la documentazione, 'qDebug()', 'qInfo()' e 'qWarning()' sono strumenti di debug. Possono essere compilati definendo 'QT_NO_DEBUG_OUTPUT',' QT_NO_INFO_OUTPUT', o 'QT_NO_WARNING_OUTPUT' durante la compilazione. – Tarod

+0

@FrankOsterfeld: my Qt Creator (3.6.1) offre tre build: Debug, Profile, Release e ho provato tutti e tre con lo stesso risultato. @Tarod: ho usato il progetto appena creato e non ho aggiunto alcuna definizione personalizzata al file sources o 'project.pro'. La domanda viene modificata per includere tutte le fonti. –

risposta

12

Fedora 22 e versioni successive disabilita l'output di debug Qt di default [1]. È possibile attivare Qt output di debug modificando il livello di sistema /etc/xdg/QtProject/qtlogging.ini o creando un file di configurazione specifico dell'utente ~/.config/QtProject/qtlogging.ini ad esempio, con il seguente contenuto:

[Rules] 
*.debug=true 
  1. https://bugzilla.redhat.com/show_bug.cgi?id=1227295
+3

Grazie per avermi segnalato il bug report, la descrizione e i commenti sottostanti spiegano l'intero problema. La regola '* .debug = true' ha abilitato solo tonnellate di log della libreria QT, ma l'aggiunta di' qt. *. Debug = false' l'ha corretta. tldr; la configurazione sotto salvata in '~/.config/QtProject/qtlogging.ini' risolve il problema di debug. '[Regole] * .debug = true; qt. *. debug = false' –