无法在Qt Creator中获取调试输出

23
在Windows上使用Qt Creator时,qDebug()语句无法正常工作,并在输出窗口中出现以下消息:

无法检索调试输出。

如何解决?

@FrankOsterfeld,在Windows上。 - laurent
5个回答

49

如果有多个Qt Creator实例处于活动状态,可能会出现此问题。要解决此问题,请关闭所有其他Qt Creator实例,然后它就应该可以正常工作。


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

对我来说这正是原因 ^_^ - Sanbrother

3

对于我来说,我通过关闭使用其他qt creator构建的正在运行的应用程序来解决了这个问题。因此,不必关闭其他qt creator。


2

我有两个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。如果你的应用程序正在使用多个线程,调试输出可能会混合在一起。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接