問題タブ [windows-error-reporting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows-error-reporting - Windows エラー報告の製品データのマッピング
ここで説明されているように、WinQual は移動しており、Windows エラー報告の製品データのマッピングは、Microsoft Ecosystem Metadata Exchange (MEME) を使用して行う必要があります。
自動化されたビルド プロセス内で、スクリプトが Winqual 用の XML ファイルを作成し、自動的にアップロードを行いました。現在、MEME は、製品バイナリからマッピング ファイルを作成する一連の PowerShell コマンドレットを提供しています。
今のところ、このコマンドレットに関するドキュメントは見つかりませんでしたが、この記事は見つかりませんでした。そこに記載されている powershell スクリプトは、残念ながら会社名を正しく設定していないようです。
誰でもより良いドキュメントを提供できますか?
windows - カスタム エラー レポート (XP 以降)
これは、いくつかの質問があるやや複雑な問題です。答えがある質問だけに答えてください。
いくつかのコンポーネントで Windows 例外が発生した場合にミニダンプを作成し、XP SP3 を最小限の OS としてサポートするタスクがあります。コンポーネントは次のとおりです。
- スタンドアロン C++ アプリ
- 既知のブラウザーで使用される CSP および PKCS11 ライブラリー (DLL)
- 1 つの UI サービスと 1 つの非 UI サービス
- 前の 3 つのポイントすべてで使用される静的ライブラリ
要件は、WER のようなもの (XP 以降) を持つことですが、Microsoft の現在の Winqual に相当するものではなく、専用のベンダー サーバーにレポートを送信する必要があります。レポート機能を 1 つの静的ライブラリにラップできれば、非常に便利です。
ただし、問題もあります。DLL は特殊な獣です。DLL コードで障害が発生した場合にのみレポートを生成する方法は? サービスには特別な取り扱いが必要になる場合もありますが、現時点ではわかりません。
まず、この作業に役立つ既知のオープンソース ライブラリはありますか? そうでない場合は、自分でロールバックする必要があります。
私が最初に考えたのは、各モジュールにスリープ状態のウォッチドッグ スレッドを用意することです。このスレッドは、未処理の例外フィルターから設定されるイベントを待機するだけです。スレッドはMiniDumpWriteDumpを使用してレポートを生成し、それをインターネット経由で送信してから終了し、前述のフィルターでスレッドが終了するのを待ってからプロセスを終了します。この解決策について何か考えはありますか?たとえば、ローカル システム アカウントの Windows サービスはインターネットにアクセスできますか?
.net - WER で収集した .NET アプリケーションのクラッシュ ダンプを VS2010 で分析するにはどうすればよいですか?
実行時に未処理の例外を引き起こす NET 4.0 アプリケーションがあります。VS2010 から実行すると、例外行で中断し、ダンプを保存できます。後でダンプをロードすると、クラッシュした場所に正確に到達し、ローカル変数の値を確認できます。
Win 7 でクラッシュ ダンプの収集を有効にしました ( Windows エラー レポートが無効になっていても、ユーザー モード ダンプを収集します)。
WER によって作成されたダンプをロードすると、ネイティブ コードで例外が発生した場所しか確認できません (混合モードのデバッグを開始しても)。
VS ダンプと同様に WER と同様の動作を実現することは可能ですか?
python - (Python を使用して) ctypes 構造を正しく作成し、WER API 関数に渡すにはどうすればよいですか?
まず、次の 2 つの同様の質問を見つけました。
Python ctypes で Windows API に構造を渡す
最初のものには受け入れられた答えがなく、別のプロセスで何かをしているとは思いません。2 つ目は、pointer() と byref() を指摘しているだけで、どちらも使用しようとしても役に立ちませんでした。
さて、私の質問に進みます:
独自の pReportInformation (最初のデータ値が独自のサイズである構造体へのポインター) を使用して関数 WERReportCreate を呼び出そうとしています。これは、やり方によってはさまざまな方法で失敗しますが、正しく行う方法がわかりません。要件の 1 つは、構造体がそれ自体のサイズを認識しているということであり、これをプログラムで決定する方法がわかりません (ただし、それが唯一の問題である場合は、今までに正しい値を推測していたと思います)。 )。WER API からの関連情報を以下に示します。
(完全な情報はhttp://msdn.microsoft.com/en-us/library/windows/desktop/bb513625%28v=vs.85%29.aspxにあります)
(完全な情報はhttp://msdn.microsoft.com/en-us/library/windows/desktop/bb513637%28v=vs.85%29.aspxにあります)
これは私が試したコードです:
そして、これは私が得る出力です:
null を渡すと機能するが、実際に (私の?) 構造体を渡すと機能しないという事実は、次の 3 つの問題のうちの 1 つを抱えていることを示唆しています。 wzConsentKey が正しく定義されている)、または構造体のサイズを正しく把握していない (実際には struct.calcsize をさまざまなオプションで使用して初期推測を取得し、ランダムに 1 を加算および減算しています)、または (参照を正しく渡していません) ?) 構造に。
ここで行き止まりになりました。任意の助けをいただければ幸いです (私の質問の明確さ、書式設定、または品質を改善する方法についての提案も同様です。これが私の最初の投稿です)。
c++ - アプリケーションの実行中に WER を無効にする
私は、IE を継続的に開き、タスクを実行し、閉じてから繰り返すアプリケーションに取り組んでいます。ただし、実行中に IE がクラッシュした場合、システムは次の反復に進む準備ができていますが、エラー レポートは開いたままになり、プロセスを完全に閉じることはできません。これは、ユーザーがダイアログ ボックスをクリックしてエラーを無視するまで、メモリを占有し続けることを意味します。
現在、VectoredExceptionHandlers の使用と、WER を完全に無効にする機能の 2 つの解決策を検討しています。
VectoredExceptionHandlers についての私の理解では、アプリケーションによってスローされた例外をインターセプトし、WER に到達する前に処理するということです。ただし、アプリケーションが開始した IE プロセスでクラッシュが実際に発生しているため、これらのハンドラーが引き続き WER で例外を受信するのを防ぐことができるかどうかはわかりません。
また、StackOverflow に関する他の質問が示唆するように、システムで WER を完全に無効にしたくありません。アプリケーションの実行中にのみ無効にしたいのです。
これらのオプションまたはこれを処理するためのより良い方法について、これ以上の知識を持っている人はいますか?
c# - APPCRASH メッセージの詳細は何を意味しますか?
C# アプリケーションから APPCRASH が発生しています。ランタイムは、「このアプリケーションはランタイムに通常とは異なる方法で終了するよう要求しました」というエラー メッセージを表示します。次に、[OK] をクリックすると、通常の「オンラインで解決策を確認する」、「プログラムを閉じる」、「プログラムをデバッグする」オプションを含む「MyApplication が動作を停止しました」というメッセージが表示されます。「追加の詳細」をクリックすると、多くの追加情報を含む APPCRASH 署名が表示されます。人間が判読できるものもあれば、単なる 16 進数のものもあります。「例外コード」は 40000015 です。「追加情報」の行もあります。私の質問は、宇宙の誰かが APPCRASH メッセージの情報が何を意味するか知っていますか?
メッセージは、そこから原因を推測できる誰かが読むことを意図していたようです. 回答を探していると、まったく同じ形式のメッセージを投稿している人がたくさんいることがわかりました。残念ながら、この情報が何を意味するのかについての説明は見つかりませんでした。
また、「プログラムのデバッグ」オプションも試しましたが、役に立ちません。コールスタックのどこにもコードがなく、システムdllに入れられます。調べたところ、このシステムコードではエラーは発生しません。
APPCRASH メッセージは別の dll を「Fault Module」(このコードは多くの外部 dll を使用) として指定しており、致命的なエラーはおそらくそこで発生します。しかし、その情報はあまり役に立ちません。なぜなら、コード内で外部 dll に対して不正な呼び出しを行っている (または不正な状態にしている) 場所を見つける必要があるからです。悲しいことに、「私のコード」と言うときは、私が作業しているコードを意味しています。これは、数十人が数年かけて書いた巨大なコードベースなので、致命的な呼び出しを行う可能性のある場所を推測することはできません。だからこそ、私は APPCRASH メッセージからより多くの情報を推測することを望んでいました. それが、私が細部に非常にケチをつけている理由でもあります。全体が非常に独占的であり、多くの官僚的形式主義があります。APPCRASH メッセージの内容を掲載していないのもそのためです。
明確にするために、私の問題をデバッグするように頼んでいるわけではありません。エラーの再現可能なケースを提供する方法はありません。また、特定のケースでエラーの原因を教えてくれるように誰かに頼んでいるわけでもありません。これらの 16 進数の解釈方法を知りたいだけですが、ドキュメントを見つけることができませんでした。
windows - アプリケーション クラッシュ ダンプの収集方法
特定のアプリケーションのクラッシュ ダンプを収集する必要があります。この記事を読みましたが、あまり役に立ったとは言えません。
プラットフォーム:: WinXP、Vista、および Win7。
WinXP 以降のバージョンでは、ダンプの収集方法が異なるようです。たとえば、IE のすべてのダンプ ファイルを収集する場合、どのような手順に従う必要がありますか?
c# - 非同期タスクから現在のプロセスを中止する
Task
TPLを介して生成された非同期で実行される複雑な関数がいくつかありますが、予期しない方法で失敗することがあります。このような障害が発生した場合、これはプログラミングエラーを示しており、プログラムの状態が破損している可能性があります。したがって、プログラムで例外をキャッチして処理し、「リンプオン」したくないので、プロセスをクラッシュさせて終了させます。
また、Windowsエラー報告システムがクラッシュとして検出し、ミニダンプのキャッチやMicrosoftへの送信など、すべての便利なデバッグ処理を実行するように、この処理を終了させたいと考えています。
これは、エラー状態でプログラムが何をすべきかについてのあなたの意見に反するかもしれないことを私は理解していますが、問題はそれについてではありません。
私が抱えている問題は、例外がタスクから発生するため、プロセスがすぐにクラッシュすることはないということです。しばらくして、ガベージコレクターがその知恵で「監視されていない」例外を収集することを決定したときにクラッシュします。
プロセスをすぐにクラッシュさせたいのは...
- 実際のエラーからのコールスタックとスレッドダンプは、クラッシュダンプで収集したいものです
- プロセスが「足を引きずり」、後で不確定な時間にクラッシュすると、破損している可能性のあるプログラム状態で動作するため、さらに損傷を引き起こす可能性があります。
- ユーザーは、どの操作が実際にクラッシュを引き起こしたのかについて混乱します
つまり、問題は次のとおりです。
Task
Windowsエラー報告が有用なミニダンプを作成できるように、TPLで作成された非同期からプロセスをクラッシュさせるにはどうすればよいですか?
前もって感謝します!
c++ - 別のプロセスを介して独自のクラッシュ ダンプを作成するか、WER に依存する必要がありますか?
現時点での私の情報は (Win-XP では WER がそのように機能しないため、コンテキストを Windows-7 に保ちましょう)、アプリケーションの完全なメモリ クラッシュ ダンプを取得する方法が 2 つあります。
アプリケーションのローカル フル メモリ ダンプを生成するように WER を設定できます
情報はこちら: http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
- 追加 (32 ビット アプリ用。SysWow64 ノードは使用しない
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
でください)キー (おそらくアプリ固有のサブキー...LocalDumps\MyApplication.exe
) - 2 に設定
DumpType
します。 - 必要に応じて他の設定を微調整します
注: このアプリケーションはカスタム展開されているため、このレジストリ値を設定しても問題ありません。
これにより、単純なデモ アプリでかなり信頼性の高いクラッシュ ダンプが得られるようです。
または、自分でダンプを作成することもできます - ウォッチドッグ プロセスとすべてを適切に使用します。
私はMiniDumpWriteDump
以前はダンプを書き込んでいましたが、障害のリスクを最小限に抑えるために、ウォッチドッグ プロセスからこれを行います (ここで説明されています)。
質問
それで、どちらがより良いアプローチですか?自分で行う場合、クラッシュ ハンドラーで行うことを慎重に最小限に抑えることを考えると、WER アプローチが信頼できるかどうか、または WER アプローチがインプロセスでさらにいくつかのことを行うかどうか疑問に思っています。不合格。アイデア/経験はありますか?