我正在使用WaitForDebugEvent()
API在調試第三方應用程序時處理調試事件。我經常遇到由CLR拋出的訪問衝突(惡意使用一些.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
這很清楚,但正如有人之前所說,SO很久以前就已經下地獄了。這些日子更像是一個由具有足夠聲譽的人開始的排尿比賽,首先就會開始嘔吐。 – kytodrk
嗯,我最初提出你的問題是因爲我同意這個問題很明確而且很有意思。編輯讓我更加困惑。我以爲你在說當你使用WaitForDebugEvent時,你看不到CLR拋出的異常,並且詢問如何接收這些異常的通知。對我來說似乎是一個有效的問題。那麼這些來自你編輯的異常細節在哪裏?這裏的實際問題是什麼?術語的不精確使用也無濟於事。當你「捕捉」一個異常,這意味着一個異常處理程序,而不是WaitForDebugEvent返回TRUE –
現在清除。好的 - 你可以在clr.dll中查看ExceptionAddress - 這意味着「由CLR拋出」?那麼在什麼問題上? – RbMm