博主最近在升级了Qt之后发现,之前编译运行完全没问题的程序在新的Qt5.3中,虽然是以Debug编译运行,但qDebug()这个最常用的调试函数却出问题了,表现为在QtCreator的Application Output窗口中不会有debug信息输出,但如果编译好程序放在console里运行,是可以看到debug信息的。在网上查阅了一下,发现这是由于Archlinux的二进制打包者使用了-journald编译参数,而恰好Qt在这方面有个Bug,会导致debug信息不能正常输出,不过可以手动为QtCreator添加QT_LOGGING_TO_CONSOLE=1的环境变量来解决这个问题。
当前此Bug已经提交到了Qt的bugreports网站中,有人建议将QT_LOGGING_TO_CONSOLE=1加入到QtCreator的默认运行环境变量中,此时Bug还未修复
如果你也遇到了相同的问题,可以试试下面几个方法,这些方法是在Archlinux的Bug列表中大家针对此Bug发的一些解决方案:
1. 从命令行启动QtCreator: $ QT_LOGGING_TO_CONSOLE=1 qtcreator.
2. 使用Export将QT_LOGGING_TO_CONSOLE=1加入到环境变量中(.bashrc/.zshrc等等,可能要重启以生效).
3. 编辑qtcreator.desktop启动文件加上QT_LOGGING_TO_CONSOLE=1的环境变量.
4. 重新编译安装Qt,记得不要加-journald参数.
5. 换Qt5.3以下的版本.