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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix