linux下 QtCreator 运行不显示 qDebug 输出的问题
问题简述
在使用 QtCreator 编译运行程序的时候,在 3应用程序输出
选项卡页面内没有相应的 qDebug
的输出内容。
关于这个问题,网上有的解决方案是在项目配置选项中勾选 run in terminal。但是这个解决不了根本问题,只是开启一个终端去运行,在终端输出而已。
我使用的发行版本为
ManjaroLinux
,使用的QtCreator
为当前最新的4.14.2
版本。
解决方案
在网上找到了一个解决方案,这个是可以解决问题的。
ArchLinux下QtCreator无法显示qDebug()的输出的问题与解决方案
博主最近在升级了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发的一些解决方案:
- 从命令行启动QtCreator: $ QT_LOGGING_TO_CONSOLE=1 qtcreator.
- 使用Export将QT_LOGGING_TO_CONSOLE=1加入到环境变量中(.bashrc/.zshrc等等,可能要重启以生效).
- 编辑qtcreator.desktop启动文件加上QT_LOGGING_TO_CONSOLE=1的环境变量.
- 重新编译安装Qt,记得不要加-journald参数.
- 换Qt5.3以下的版本.
不过现在新版本的 QtCreator 已经提示废弃了 QT_LOGGING_TO_CONSOLE
环境变量的使用,建议使用 QT_ASSUME_STDERR_HAS_CONSOLE
或者 QT_FORCE_STDERR_LOGGING
(可同时都使用)。
建议修改 /usr/share/applications/org.qt-project.qtcreator.desktop
文件,加入环境变量QT_ASSUME_STDERR_HAS_CONSOLE=1
。
修改方法:将 Exec=qtcreator %F
改为 Exec=env QT_ASSUME_STDERR_HAS_CONSOLE=1 qtcreator %F