在linux上运行我的Qt5应用程序时,我看不到qDebug,qWarning,qCritical或qFatal的任何输出。我知道我可以使用qInstallMsgHandler
来安装消息处理程序并查看它们,但这是相当重量级的。
我只想检查qWarning日志,看看是否有任何错误连接的信号。有没有办法看这个日志?一个特殊的命令行选项,一个环境变量?
我想我记得在过去,所有内容都打印到了stderr,也许这是Qt5的变化?
答案 0 :(得分:12)
请不要错误地假设qDebug,qWarning,qCritical和qFatal总是登录标准错误。绝对不是这样。
实际目的地取决于Qt配置和目标操作系统。另外,5.4介绍了一些行为变化。有关讨论,请参阅here和here。
TL; DR:
在Qt> = 5.4:
QT_LOGGING_TO_CONSOLE
环境变量设置为1
。QT_LOGGING_TO_CONSOLE
环境变量为0
(这将强制通过本机系统记录器进行登录)。QT_LOGGING_TO_CONSOLE
环境变量 ,那么是否登录到控制台取决于应用程序是在TTY(在UNIX上)运行还是在&#39 ;一个控制台窗口(在Windows上)。在Qt< 5.4 ,情况更加扑朔迷离。
5.4之前的方法存在的问题是,如果Qt是使用journald支持构建的,在Unix IDE下,f .i.将无法捕获应用程序的调试输出。这是因为输出转到了journald,而不是IDE。在5.4中,这种方法在操作系统中变得更加灵活和统一。
答案 1 :(得分:2)
它们仍然会打印到标准错误。
如果从命令行启动应用程序,通常会在那里打印,或者如果使用Qt Creator,它将显示在“应用程序输出”窗口中。
答案 2 :(得分:2)
如果您碰巧运行使用-journald
选项编译Qt的Arch Linux,则所有调试输出都默认定向到systemd日志(显示journalctl
)。
您可以通过将QT_LOGGING_TO_CONSOLE=1
定义为环境变量来覆盖此行为。
答案 3 :(得分:0)
如果您使用的是visual studio,则会在IDE的输出窗口中打印qDebug等。