一、系统环境:
中标麒麟V5
qt-creator-4.3.1
qt5-qtbase-5.6.2
二、问题:代码中qDebug()函数无输出,但qInfo()和qWarning()有输出
创建一个test工程,使用qDebug()打印信息,但是没有任何输出,但是qInfo()qWarning()是正常的。
// mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug() << "test qDebug" ;
qInfo() << "test qInfo" ;
qWarning() << "test qWarning".
}
运行结果为:
三、解决方法
该问题存在很久了,QT社区有相关讨论。
a.我们可以使用qInfo()和qWarning()等其他函数代替qDebug(),但这需要修改你的代码。
b.对于不想修改项目代码、不想破坏现有日志级别的,可以使用添加环境变量的方法,使qDebug()正常工作:
export QT_LOGGING_RULES="*.debug=true;qt.*.debug=false"
说明:这是两条规则,分号分隔,后面的“qt.*.debug=false”不加也可以,但是会输出很多其他的日志信息。
# 每次运行前添加环境变量
QT_LOGGING_RULES="*.debug=true;qt.*.debug=false" ./yourapp
# 或者 export一次,之后再运行app
export QT_LOGGING_RULES="*.debug=true;qt.*.debug=false"
./yourapp
也可以将环境变量写入/etc/environment文件中,重启后一致生效。
# vim /etc/environment
QT_LOGGING_RULES="*.debug=true;qt.*.debug=false"
如果仅仅是使用qtcreator开发和调试,只想在qtcreator中有输出,建议只把环境变量设置在qtcreator中。
四、验证
终端中运行:
qtcreator中运行: