linux下 QtCreator 运行不显示 qDebug 输出的问题

问题简述

在使用 QtCreator 编译运行程序的时候,在 3应用程序输出 选项卡页面内没有相应的 qDebug 的输出内容。
关于这个问题,网上有的解决方案是在项目配置选项中勾选 run in terminal。但是这个解决不了根本问题,只是开启一个终端去运行,在终端输出而已。
linux下 QtCreator 运行不显示 qDebug 输出的问题

我使用的发行版本为 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发的一些解决方案:

  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以下的版本.

不过现在新版本的 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

linux下 QtCreator 运行不显示 qDebug 输出的问题

上一篇:linux安装nginx并配置ssh


下一篇:shell脚本练习