【问题标题】:Cannot retrieve debugging output in Qt Creator无法在 Qt Creator 中检索调试输出
【发布时间】:2013-01-01 00:09:25
【问题描述】:

在 Windows 上的 Qt Creator 中,qDebug() 语句不起作用,并且在输出窗口中出现以下消息:

无法检索调试输出。

如何解决?

【问题讨论】:

  • @FrankOsterfeld,在 Windows 上。

标签: windows qt qt-creator qdebug


【解决方案1】:

如果有多个 Qt Creator 实例处于活动状态,则会出现此问题。要解决此问题,只需关闭 Qt Creator 的所有其他实例即可。

【讨论】:

    【解决方案2】:

    对我来说,我通过简单地关闭使用其他 qt 创建者构建的正在运行的应用程序解决了这个问题。所以没有必要关闭其他 qt 创建者。

    【讨论】:

      【解决方案3】:

      或者您可能正在运行 Sysinternals 的 DebugView 版本,这会导致相同的结果。

      【讨论】:

      • 正是我的原因^_^
      【解决方案4】:

      对我来说,当我有多个应用程序实例而不是 Qt Creator 实例时会出现此错误消息。

      【讨论】:

        【解决方案5】:

        嗯,我有两个 QtCreator 实例,但我无法关闭其中一个。他们一起工作。 此问题的一种解决方法是使用 qInstallMessageHandler 重定向您的应用程序输出消息。

        #include "mainwindow.h"
        
        #include <QApplication>
        
        void redirectedOutput(QtMsgType, const QMessageLogContext &, const QString &);
        QMutex debugOutMutex;
        
        int main(int argc, char *argv[])
        {
            QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
            QApplication app(argc, argv);
        
            qInstallMessageHandler(redirectedOutput);
            
            MainWindow w;
            w.show();
            
            return app.exec();
        }
        
        void redirectedOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
        {
            debugOutMutex.lock();
            std::cout << QDateTime::currentDateTime().toString("hh.mm.ss.zzz  ").toStdString() <<  msg.toStdString() << std::endl;
            if (type == QtFatalMsg) {
                abort();
            }
            debugOutMutex.unlock();
        }
        

        我也添加了QMutex。如果您的应用程序使用多个线程,则可以混合调试输出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-27
          • 2020-12-24
          • 2013-01-23
          • 2022-12-22
          相关资源
          最近更新 更多