22

WindowsのQtCreatorでは、qDebug()ステートメントが機能せず、次のメッセージが出力ウィンドウに表示されます。

デバッグ出力を取得できません。

どうすれば修正できますか?

4

5 に答える 5

47

この問題は、QtCreatorの複数のインスタンスがアクティブな場合に発生する可能性があります。この問題を解決するには、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

QtCreatorのインスタンスが2つあり、そのうちの1つを閉じることができませんでした。彼らは一緒に働きます。この問題の回避策の1つは、を使用してアプリケーションの出力メッセージをリダイレクトすることです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。アプリケーションが複数のスレッドを使用している場合、デバッグ出力が混在する可能性があります。

于 2021-08-13T09:01:19.803 に答える