Не удается получить выходные данные отладки в Qt Creator

В Qt Creator на Windows, qDebug() операторы не работают, и в окне вывода появляется следующее сообщение:

Не удается получить выходные данные отладки.

Как это можно исправить?

5 ответов

Решение

Эта проблема может появиться, если активен более одного экземпляра Qt Creator. Чтобы исправить проблему, просто закройте все другие экземпляры Qt Creator, и это должно работать.

Для меня я решил проблему, просто закрыв работающее приложение, созданное с помощью другого создателя qt. Так что нет необходимости закрывать другого создателя qt.

Или вы можете запустить версию DebugView от Sysinternals, которая приводит к тому же результату.

Что ж, у меня было два экземпляра 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.

Другие вопросы по тегам