1

指定: Qt Creator (4.7.4、Win32 のみ、gcc/MinGW) 用に作成されたアプリケーション プロジェクト。

必要: 有名な Google ブレークパッド ライブラリをプラグインして、顧客から詳細なクラッシュ ダンプを収集します。

私の現在の調査結果は次のとおりです。

  • 約 2 年前の breakpad-qt プロジェクトがあります。Qt Creator でビルドする上流のブレークパッド ソースのサブツリーが含まれているので、それをビルドして動作例を作成しようとしました。
  • DbgHelp.hブレークパッド自体は、Microsoft ミニダンプ形式を使用しているため、本質的に Windows SDK に依存しています。
  • DbgHelp.hWindows SDK ヘッダーで見つけることができますが、GCC/MinGW でコンパイルできなかったと報告されている Visual Studio のヘッダーがさらに含まれています (MSVS コンパイラによる互換性のない言語拡張だと思います)。
  • google breakpad には MSVS ソリューション ファイル (gyp によって作成された) が含まれており、MSVS で簡単にビルドでき (私は 2008 と 2010 の両方の Express バージョンで成功しました)、.libターゲット アプリケーションにリンクするいくつかの を作成します。
  • ただし、.lib上記でコンパイルされたファイルは MinGWldでは認識されないため、Qt プロジェクトとリンクできませんでした。ライブラリ形式の既知の非互換性です。
  • ただし、.libMSVS 2008 (および 2010 ではない) のファイルはreimp、ライブラリを MSVS 形式から MinGW で使用可能な形式に変換することを目的とした MinGW ツール (利用可能な最新のもの) のツールによって理解されます。私の場合、シンボルは一見正しくエクスポートされ、一部の.objファイルもエクスポートされますが、再コンパイルされたライブラリ ( dlltoolMinGW を使用) はまだ MinGW によってリンクできませんld
  • そして、.libリンケージに関するすべての騒ぎは、別の問題で妨げられています。クライアント コードをコンパイルするには、Qt プロジェクトで有効なヘッダーが必要です。これらのヘッダーは、 を含むブレークパッドのものとまったく同じDbgHelp.hです。上記を参照してください!

現在開いている代替案:

  • アプリケーションを Qt/MinGW (Creator) から Qt/MSVS に完全に切り替えます。これにより、上流のブレークパッドの直接リンクが可能になります。これは、Qt + ブレークパッドの小さなググ可能なユースケースの成功の核心だと思います。
  • アプリケーションが Creator で通常どおりビルドされ、後で MSVS リンカーによってブレークパッドとリンクされる、いくつかのハイブリッド アプローチを構築します。しかし、再び、ヘッダー!
  • 純粋な Qt Creator でコンパイルするために、Microsoft ヘッダーからブレークパッドが必要とする最小限のクロージャーを切り離します。

提案、既存の経験はありますか?

4

1 に答える 1

0

残念ながら、QtBreakpad 統合は MinGW 向けに開発およびテストされていません。

于 2011-12-01T17:40:08.117 に答える