簡體   English   中英

用於檢測C#和非托管C ++應用程序的內存泄漏的工具

[英]Tools for detecting memory leaks for C# and unmanaged C++ application

我們有一個在C#.NET Framework 2.0中開發的應用程序,它與COM組件(用C ++非托管代碼開發)交互。 有時,應用程序會拋出內存不足異常(很難重現)。

我們希望有一個工具來確定我們是否有任何內存泄漏,並確定內存異常的根本原因。 什么工具最適合這個? 理想的工具可以附加到用戶機器上的正在運行的進程中進行分析。

我們已經嘗試過.NET內存分析器,但它只能附加到.NET framework 4.0運行進程。 我們還使用了Memory Validator(C ++內存泄漏檢測器); 但是,這個工具在附加到正在運行的進程時沒有給我們足夠的提示。

使用內存分析器 - 它們可以幫助查找此類泄漏,例如:

簡短的回答

您是否嘗試過Microsoft Application Verifier 這是一個非常小的,我敢於簡約,但令人驚訝的強大工具。

答案很長

在調查內存泄漏問題時,我使用了Microsoft WindbgMicrosoft Application Verifier,並且我已經徹底評估了Red Gate ANTS Performance Profiler (我建議購買,我個人看到建議由不同的開發人員購買許多不同的團隊), DotTrace.Net Memory Profiler

獲取和學習如何使用一個或多個此類工具具有明確的價值,然后可能安裝在托管在團隊開發人員之間的某個虛擬機上的虛擬開發環境中。

如果您評估這些工具和任何其他工具,對我而言,最大的賣點是能夠調查使用Windbg進行的內存轉儲,因為這些內容甚至可以從客戶那里獲得。

試試WinDbg和這張收據: http//www.codeproject.com/KB/cpp/MemoryLeak.aspx

對於最基本的測試,您可以使用sysinternals procexp.exe來檢查是否確實存在內存泄漏問題。 當遇到空指針時,很多COM代碼會拋出內存不足,因此異常代碼可能會產生誤導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM