22

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

无法检索调试输出。

如何修复?

4

5 回答 5

47

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

于 2013-01-17T12:38:58.273 回答
3

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

于 2018-04-25T07:45:29.890 回答
2

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

于 2013-08-13T12:16:18.757 回答
1

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

于 2013-01-18T07:17:54.540 回答
1

Well, I had two instances of QtCreator and I could not close one of them. They work together. One workaround for this problem is redirecting your application output messages using 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();
}

I added a QMutex too. If your application is utilizing more than one thread, debug outputs can be mixed.

于 2021-08-13T09:01:19.803 回答