7

私のアプリケーションは、QA 環境で InvalidCastException をスローします。これは開発では再現できません。

例外の瞬間にミニダンプを取得したいと考えています。adplus については知っていますが、InvalidCastException がスローされたときにミニダンプを作成するように使用する方法がわかりません。どうやら、1 つの .NET 例外と別の .NET 例外を区別していないようです。私が間違っているかもしれませんが、方法はあります。または、それを行う別のツールがあります。できれば無料のもの。

とにかく、誰でもこの問題を処理する方法をアドバイスできますか?

ありがとう。

アップデート

  1. ビルドは、QA と開発の両方でデバッグ ビルドです。ただし、QA はラボで可能になった複雑なシナリオを実行しますが、これは開発者が再現することはできません。したがって、QA での実行時にダンプを作成する機能が必要です。
  2. コードを変更して、コードからミニダンプを作成できます。ただし、このような問題が発生するたびにコードを変更する必要がない、より柔軟なソリューションが必要です。

更新 2

実際、私は John robbins SuperAssert.Net からミニダンプ生成コードを「盗みました」。これは特定のポイントからミニダンプを生成するためのコードですが、adplus のスタイルでより柔軟なアプローチが必要です。John Robbins のアプローチは、cdb スクリプトを作成し、そのスクリプトで cdb デバッガーを呼び出してプロセスにアタッチし、ダンプを作成することです。MiniDumpWriteDump API は使用しません。

4

3 に答える 3

6

The easiest way is to let it bubble up all the way out of the app, let the user report it to Microsoft, and enroll in Windows Error Reporting.

Alternatively, you can capture it by hand by using John Robbins' SUPERASSERT .NET (or a subset of his code).

UPDATE (for non-code solution): Take a look at Systems Internals' ProcDump.

于 2010-06-09T11:05:56.800 に答える
3

おそらくC#アプリケーションでAPIを使用したいMiniDumpWriteDumpですか?コード例についてはhttp://blog.kalmbach-software.de/2008/12/13/writing-minidumps-in-c/を参照するか、InternatでMiniDumpWriteDumpC#を検索してください。

Visual Studio 2010を使用している場合は、ミニダンプをVisual Studioに直接ロードできます(http://msdn.microsoft.com/en-us/library/d5zhxt22(v=VS.100).aspxを参照) 。

于 2010-06-09T12:12:09.273 に答える
2

ADPlus スクリプトで sos.dll をロードする必要がある可能性があります。このブログ投稿では、その方法を示します。

ミニダンプからマネージ コードをデバッグすることの疑わしい喜びに注意してください。QA の段階で診断が困難な例外が発生した場合は、本番環境に移行したときに再び発生します。火を噴くドラゴンが追加されました。AppDomain.UnhandledException のイベント ハンドラーを記述して、適切な未処理の例外ログに注意してください。e.ExceptionObject.ToString() をログに記録すると、豊富な情報が得られます。

于 2010-06-09T11:59:50.093 に答える