【发布时间】:2013-01-01 00:09:25
【问题描述】:
在 Windows 上的 Qt Creator 中,qDebug() 语句不起作用,并且在输出窗口中出现以下消息:
无法检索调试输出。
如何解决?
【问题讨论】:
-
@FrankOsterfeld,在 Windows 上。
标签: windows qt qt-creator qdebug
在 Windows 上的 Qt Creator 中,qDebug() 语句不起作用,并且在输出窗口中出现以下消息:
无法检索调试输出。
如何解决?
【问题讨论】:
标签: windows qt qt-creator qdebug
如果有多个 Qt Creator 实例处于活动状态,则会出现此问题。要解决此问题,只需关闭 Qt Creator 的所有其他实例即可。
【讨论】:
对我来说,我通过简单地关闭使用其他 qt 创建者构建的正在运行的应用程序解决了这个问题。所以没有必要关闭其他 qt 创建者。
【讨论】:
或者您可能正在运行 Sysinternals 的 DebugView 版本,这会导致相同的结果。
【讨论】:
对我来说,当我有多个应用程序实例而不是 Qt Creator 实例时会出现此错误消息。
【讨论】:
嗯,我有两个 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。如果您的应用程序使用多个线程,则可以混合调试输出。
【讨论】: