1

これはいくつかの質問ではやや複雑な問題です。あなたは答えがある質問だけに自由に回答してください。カスタムエラーレポート(XP以上)

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

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

必要条件は、WER(XP以降)のようなものですが、マイクロソフトの現在のWinqualの代わりに専用のベンダーサーバーにレポートを送信することです。レポート機能を1つの静的ライブラリにラップすることは本当にうれしいでしょう。

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

まず、この作業で私を助けることができる既知のオープンソースライブラリがありますか?もしそうでなければ、私は自分自身をロールバックする必要があります。

私の最初の考えは、自分のモジュールごとにスリープウォッチドッグスレッドを持つことです。このスレッドはイベントを待つだけで、unhandled exception filterから設定されます。スレッドはMiniDumpWriteDumpを使用してレポートを生成し、インターネット経由で送信して終了し、前述のフィルタでスレッドが終了するのを待ってからプロセスを終了します。このソリューションの考えは?たとえば、ローカルシステムアカウントのWindowsサービスはインターネットにアクセスできますか?

+0

Windows 7では、ダンプを指定された場所に保存するようにWERを設定できます。おそらくVistaでも。 XPについてはわからないそれから、いつでもどこでも、あなたが望む場所でダンプを送ることができます。 –

答えて

1

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

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

+0

プロセスごとに1つのUnhandledExceptionFilterしか登録できません。 DLLで例外が発生するという事実は、DLLを開発して例外構造に適切なフラグを設定する限り、実際の問題ではありません。 DLLが別のUnhandledExceptionFilterを登録している場合は、前のものが削除されます。 – mox

+0

彼らは認証されたアクセスを持っていませんが、彼らはネットワーク上でうまくいくかもしれません。とにかくWERサーバーはコンピュータをどのように認証できますか? – ixe013

+0

正しいです、彼らは匿名です! – mox