在Windows上的Qt Creator中,qDebug()
语句不工作,并且在输出窗口中出现以下消息:
无法检索调试输出。
如何修复?
如果多个Qt Creator实例处于活动状态,则可能出现此问题。要解决这个问题,只需关闭Qt Creator的所有其他实例,它应该可以工作。
或者您可能正在运行Sysinternals的DebugView版本,这会导致相同的结果
对于我来说,我通过关闭使用其他qt创建者构建的正在运行的应用程序来解决这个问题。所以没有必要关闭其他qt创建器
我有两个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
。如果应用程序使用多个线程,则调试输出可以混合使用。
对于我来说,当我有多个应用程序实例时,出现此错误消息,而不是Qt Creator。