2016-07-08 25 views
3

私はWaitForDebugEvent() APIを使用して、サードパーティのアプリケーションをデバッグする際にデバッグイベントを処理しています。非常に頻繁に私はCLRによって投げられたアクセス違反をキャッチします(Debianはいくつかの.NETライブラリを使用しています)。私は後でWinDbgを使ってミニダンプを分析します。 WaitForDebugEvent()が返された直後に、CLRからのそのような例外を検出できますか?ここでCLRによってスローされた例外を検出する方法は?

は、キャッチした例外の詳細については、以下のとおりです。

EXCEPTION_RECORD: (.exr -1) 
ExceptionAddress: 000007fef7e870eb (clr!EEFileLoadException::Throw+0x00000000000001ac) 
ExceptionCode: c0000005 (Access violation) 
ExceptionFlags: 00000000 
NumberParameters: 2 
    Parameter[0]: 0000000000000000 
    Parameter[1]: 000000000000007d 
Attempt to read from address 000000000000007d 
+0

非常にはっきりしていますが、誰かが前に言ったように、SOはずっと前に地獄になってしまっています。今日では、それは最初の場所で怒って開始するのに十分な評判が高い人々によって導かれた激しいコンテストのようなものです。 – kytodrk

+0

さて、私は元々あなたの質問をアップアップしました。なぜなら、それは明らかで、潜在的に興味深いことに同意したからです。この編集により私はもっと混乱してしまいます。 WaitForDebugEventを使用すると、CLRによってスローされた例外が表示されず、これらの例外の通知を受け取る方法を尋ねていたと言っていると思いました。私には有効な質問のようです。では、編集した例外の詳細はどこから来たのですか?実際の問題は何ですか?用語の不正確な使用は役に立ちません。例外を「キャッチ」すると、例外ハンドラを意味し、TRUEを返すWaitForDebugEventではなく、 –

+0

がクリアされます。 OK - あなたはclr.dllでそのExceptionAddressを見ることができます - これは "CLRによってスローされた"という意味ですか?どのような問題? – RbMm

答えて

0

CLRからのすべての例外は、フォーム0xE0となっにおける例外コード******とNumberParameters> 3.私が見た、最も一般的なを持っている - e0434352(0xe0000000 + 'CCR') - の例を探して - this: -

不明な例外 - コードe0434352(最初のチャンスは)ここで大きな手がかり です。このエラーを見ると、 の「0x43」「0x43」「0x52」または「C」「C」「R」のような16進数が表示される場合があります。いいえ、これはCreedenceへの礼拝ではなく、悪い月が上がっているということではありません。これにより、CLRランタイムからエラーがスローされていることがわかります。 甘い。物事 ちょっと簡単になった。

他の一般的なコード - 0xE0434F4D(0xe0000000 + 'COM') - How CLR maps SEH exceptions to managed exception types、編集

:CLR

によってスロー

アクセス違反ダイレクトSTATUS_ACCESS_VIOLATION例外を意味ですか?この場合、検出する方法はありませんが、私はCLRダイレクトでこれを見ることはありません。またはCLRがRaiseExceptionをスローし、ExceptionInformation [0] - > STATUS_ACCESS_VIOLATION?

+0

STATUS_ACCESS_VIOLATION – kytodrk

+0

CLRマネージドコード(DLLではない)によって生成されたものよりも、アクセスメモリの場所が無効であるため、STATUS_ACCESS_VIOLATIONを直接上げることができますか?これは「非常に」ですか?私はこれを見ることはできませんが、この場合、非常に一般的な例外コードのみを表示し、DLLにないことを確認できますが、これはCLRのgeneretedコードであることをどのように決定するのですか?またはいくつかのシステムで.net DLLのSTATUS_ACCESS_VIOLATIONを意味しますか? – RbMm

+0

誤った以前のコメントをお詫び申し上げます。私はSTATUS_ACCESS_VIOLATIONではなくEXCEPTION_ACCESS_VIOLATIONについて話しています。 – kytodrk

関連する問題