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发的一些解决方案:

  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

posted @ 2021-05-06 11:57  乌合之众  阅读(3227)  评论(0编辑  收藏  举报
clear