2

QT は初めてですが、他の誰かが作成したプロジェクトをインポートしました。これは QT Creator の MinGW バージョンでコンパイルおよび実行されます。しかし、それには小さな問題があります。デバッグ出力を確認できれば、診断がはるかに簡単になります。

「qInfo() << "debug message";」のような行がいたるところにありますが、プロジェクトをデバッグ モードで実行すると、アプリケーションの出力ウィンドウにそれらからの出力が表示されません。それはあるはずです。プログラムを実行した後に表示されるのは、次のとおりです。

デバッグ開始 デバッグ終了

私が試したこと:

  • 使用されているキットが、インストールに付属の QT デバッガーと mingw であることを確認してください。

  • main.cpp の先頭に「#undef QT_NO_INFO_OUTPUT」を使用して、ifdef を配置します。

  • インクルード QtDebug をすべてのヘッダー ファイルに追加

まだ何もありません。

私は何を間違っていますか?

私はQtを初めて使用することを覚えておいてください。おそらく、私が試したことの1つが適切に実装されていないことです:S

ありがとう!

4

1 に答える 1

3

qInfo() qDebug() などはすべて、オーバーライド可能な関数にフォールバックします。これがプロジェクト内のどこにも行われていないことを確認してください (「qInstallMessageHandler」のグローバル検索)。実装されていない場合は、次のように自分で定義します。

void debugmessagehandler(QtMsgType Type, 
    const QMessageLogContext& Context, 
    const QString &Message) 
{
#ifdef WIN32
    OutputDebugString(reinterpret_cast<const wchar_t *>(m.utf16()));
#endif
}

このようにQApplication-object-constructor(またはその直後)に登録します

this->qInstallMessageHandler(debugmessagehandler);

あとは、デバッガーが実際に接続されていることを確認するだけです。あなたは呼び出すことができます

isDebuggerPresent(void);

コード内の winbase.h からチェックするか、外部プログラムを使用して検証します。

于 2016-10-13T20:11:20.320 に答える