2011-10-05 41 views
5

我們有其在C#的.NET Framework 2.0,其與COM組件進行交互開發的應用程序(它是用C++開發非託管代碼)。有時應用程序會拋出內存不足的異常(很難重現)。工具檢測內存泄漏爲C#和非託管C++應用

我們希望有一個工具,找出如果我們有任何內存泄漏,並確定內存異常的根本原因。什麼工具對此最好?一個理想的工具可以附加到用戶機器上的運行過程中進行分析。

我們試圖.NET內存分析器,但只能連接到一個.NET Framework 4.0中運行的進程。我們還使用了Memory Validator(C++內存泄漏檢測器);然而,當連接到正在運行的進程時,該工具沒有給我們足夠的提示。

回答

0

對於最基本的測試,你可以使用Sysinternals的procexp.exe來檢查,如果你真的有內存泄漏問題。大量的COM代碼會導致內存不足,當遇到空指針時,如果遇到空指針,那麼異常代碼可能會引起誤解。

2

簡短的回答

你試過Microsoft Application Verifier?這是一個非常小的,我敢說是極簡主義的,但令人驚訝的強大工具。

龍答案

在我的內存泄漏問題的調查中,我使用Microsoft WindbgMicrosoft Application Verifier我已經徹底評估Red Gate ANTS Performance Profiler(這是我推薦買的,我已經親眼見過推薦購買許多不同團隊的各種開發人員),DotTrace.Net Memory Profiler

有明確價值獲得並學習如何使用一個或多個這樣的工具,那麼也許託管團隊的開發人員之間彙集了一些虛擬機上的虛擬開發環境的安裝。

如果評估這些和其他任何工具,其一大賣點,我將探討使用WinDbg採取內存轉儲的能力,因爲這些是最容易獲得的,甚至客戶。