2014-01-13 40 views
1

我的應用程序有時會崩潰。但在Visual Studio永遠只是輸出:當訪問衝突異常發生時,如何找到wpf應用程序崩潰的位置?

XXAplication返回-1073741819(0000005)「訪問衝突」

所以我甚至不知道哪一部分是崩潰,或行崩潰。 的應用非常大。那麼有沒有什麼辦法可以知道或理解崩潰位置或任何方式可以調試?

UPDATE

對不起球員,啓用: 「通用語言運行時例外」 沒有任何 幫助。仍然只是輸出(0000005)「訪問衝突」。

+0

它是C#還是C++? – PiotrK

+0

嗨@PiotrK,它是C#。對不起,我沒有問清楚。 – qakmak

+0

調試 - >例外 - >在投擲時打開公共語言運行時例外 – mydogisbox

回答

1

通常情況下,堆棧跟蹤可能無法引導您到任何地方,甚至可能誤導您。即使在像C++這樣的本地平臺上,也很難,但至少他們有工具來幫助診斷這些問題。

訪問衝突錯誤意味着內存損壞。 .net是一個內存管理平臺,因此從技術上講它是不可能的。

但是,當您或框架或第三方庫使用不安全的代碼或調用非託管API時,這是可能的。當其中一個破壞內存時,可能不會立即拋出錯誤。該錯誤可能在其他地方出現。

你可以做的是查看你正在使用的組件,並嘗試將它們升級到最新版本,或嘗試暫時禁用/替換它們。

在我的例子經驗的System.DirectoryServices總成引起了很多這些錯誤的舊的Windows服務器上。我們升級到了更新的Windows和更新的.net,並從此以後就沒有看到過這個錯誤。

0

聽起來你正在運行從VS應用程序,在IDE中第一次機會異常,所以轉向可能是找出其中的錯誤實際上是最簡單的方法被拋出。如果你去調試|例外...菜單項,這將彈出一個對話框,您可以在其中檢查「公共語言運行時例外」的「投擲」複選框。這將導致調試器中斷拋出異常的位置,即使它是由代碼處理的。