5

ユーザーのコンピューターでクラッシュが発生したときにクラッシュレポートシステムがクラッシュレポートを生成するようにするマルチプラットフォームのQtアプリケーションを作成しています。後で、クラッシュレポートのすべてのデバッグ情報を含むスタックトレースを表示できるようになるはずです。私はgoogle-breakpadを見てきました。

しかし、それを使用するには、Windows用のMSVCに移行する必要があるようです。現在、私はWindowsでMinGWを使用していますが、MSVCでコンパイルされたすべての異なるライブラリを取得するにはかなりの時間と労力がかかります。MinGWを使用してもgoogle-breakpadを使用できる方法はありますか?または、マルチプラットフォームで動作し、Windowsでmingwをサポートできる他の方法はありますか?

4

3 に答える 3

1

libcrashreporter-qtは、「Google Breakpad クラッシュ レポートを Qt アプリケーションに簡単に統合できるようにすることを目的としています」。

MinGW ツールチェーンでビルドできるようにするためのブレークパッドへのパッチが含まれています。

于 2015-03-14T22:45:04.570 に答える
1

google-breakpad 以外にオープンなマルチプラットフォーム クラッシュ レポート システムを知りません。google-breakpad でさえ MinGW をサポートしていません。それは私が知っていることです。アプリケーションからバックトレースを取得できます。Project Dr. Mingwは、mgwhelp.dll と exchndl.dll という優れた dll を提供しています。使用するには、次のものが必要です。

  • デバッグ情報でコンパイルします。Dr. Mingw の FAQ を参照してください。
  • アプリケーション バイナリに mgwhelp.dll と exchndl.dll を含めます。
  • LoadLibrary("exchndl.dll") を明示的に呼び出して、アプリケーションの起動時に exchndl.dll をロードします。

たとえば、次のようにします。

QFile drmingw("exchndl.dll");
if(drmingw.exists())
{// If don't want create reports just delete exchndl.dll from installer
    LoadLibrary(L"exchndl.dll");
}

クラッシュ後、バイナリと同じディレクトリにバックトレースを含むファイルbinary_name.RPTが見つかります。

他に何をしますか?

  • リリース モードでは、デバッグ シンボルを取り除きます。
win32:!win32-msvc*{
    # Strip debug symbols.
    QMAKE_POST_LINK += objcopy --only-keep-debug bin/${TARGET} bin/${TARGET}.dbg &&
    QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} &&
    QMAKE_POST_LINK += objcopy --add-gnu-debuglink="bin/${TARGET}.dbg" bin/${TARGET}
}
  • 実行ごとに、.RPT ファイルが存在するかどうかを確認し、レポート ディレクトリに送信または保存します。たとえば、レポートを収集するために要点を使用します。
于 2014-11-16T19:44:21.197 に答える
0

現在、Breakpad での MinGW のサポートはありません。Google も Mozilla も MinGW に関心を持っていないため、誰かが移植に貢献しない限り、この状況がすぐに変わるとは思いません。Breakpad のようにクロスプラットフォームで動作する他のクラッシュ レポート ライブラリは知りません。

于 2013-04-11T12:08:37.953 に答える