2012-04-10 57 views
8

我想在我的過程(通過動態插件加載)中遍歷內存中的變量,並查找特定類型的實例。用於遍歷變量並查找特定類型的實例的技術

以前我可以找到特定類型(或內存中的所有類型)。我可以創建類型的實例,我可以獲取作爲不同類型字段包含的實例,但我不知道只是爲了「搜索」特定類型的實例。

+1

您可以通過解析!DumpHeap命令的輸出來自動化Windbg,然後將指針轉換爲應用程序內的託管類型。 – 2012-04-10 19:56:28

+0

答案確實表明您需要將調試器附加到您的應用程序中。如果這不是一個選項,則需要詳細說明問題,以便爲您提供一個更簡單的解決方案(例如,要求對象在中央集合中註冊,...) – 2012-04-10 20:15:41

+0

如果附加到進程不是選項,則windbg/sos技術也可以處理進程內存轉儲。只要確保你的架構正確就可以了http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64- machine.aspx – 2012-04-10 21:17:17

回答

2

一種方法是使用windbg和sos。你可以!用-type標誌dumpheap。

+0

本文旨在發現泄漏,並演示您需要的所有sos命令。作者正在使用cdb。您可以使用cdb或windbg,只要加載sos就無關緊要。 http://www.simple-talk.com/dotnet/.net-framework/investigating-.net-memory-management-and-garbage-collection/ – 2012-04-10 20:05:31