1

これは、いくつかの質問があるやや複雑な問題です。答えがある質問だけに答えてください。

いくつかのコンポーネントで Windows 例外が発生した場合にミニダンプを作成し、XP SP3 を最小限の OS としてサポートするタスクがあります。コンポーネントは次のとおりです。

  • スタンドアロン C++ アプリ
  • 既知のブラウザーで使用される CSP および PKCS11 ライブラリー (DLL)
  • 1 つの UI サービスと 1 つの非 UI サービス
  • 前の 3 つのポイントすべてで使用される静的ライブラリ

要件は、WER のようなもの (XP 以降) を持つことですが、Microsoft の現在の Winqual に相当するものではなく、専用のベンダー サーバーにレポートを送信する必要があります。レポート機能を 1 つの静的ライブラリにラップできれば、非常に便利です。

ただし、問題もあります。DLL は特殊な獣です。DLL コードで障害が発生した場合にのみレポートを生成する方法は? サービスには特別な取り扱いが必要になる場合もありますが、現時点ではわかりません。

まず、この作業に役立つ既知のオープンソース ライブラリはありますか? そうでない場合は、自分でロールバックする必要があります。

私が最初に考えたのは、各モジュールにスリープ状態のウォッチドッグ スレッドを用意することです。このスレッドは、未処理の例外フィルターから設定されるイベントを待機するだけです。スレッドはMiniDumpWriteDumpを使用してレポートを生成し、それをインターネット経由で送信してから終了し、前述のフィルターでスレッドが終了するのを待ってからプロセスを終了します。この解決策について何か考えはありますか?たとえば、ローカル システム アカウントの Windows サービスはインターネットにアクセスできますか?

4

1 に答える 1

1

「例外を待つ」スレッドを作成する必要はありません。UnhandledExceptionFilter を使用して独自の例外ハンドラーを登録するだけです。このURL を見ると、例外が発生したときに MiniDumpWriteDump を取得する方法がよく説明されています。

ローカル システムの資格情報で実行される Windows サービスには、ネットワーク アクセスがありません。

于 2012-05-08T12:20:28.393 に答える