我需要一种方法来跟踪.NET应用程序中的所有分配,这些分配是在调试应用程序的过程中的一个步骤中发生的。我的意思是,当我在调试器中,单步执行代码时,我想看一下分配发生的一步。有工具或方法吗?我尝试了几个内存分析器,包括CLR分析器,JetBrains和.NET Memory Profiler 3.5,它们似乎都没有提供这种功能。
答案 0 :(得分:0)
你可以像这样使用WinDBG
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll
.logopen log.txt
bp mscorwks!FastAllocateObject "!DumpMT poi(@esp+4); g"
bp mscorwks!AllocateObject "!DumpMT poi(@esp+4); g"
这应该打破所有AllocateObject / FastAllocateObject并转储在log.txt中传递给这些函数的MethodTable ..随着分配对象数量的增加,它可能会变得很慢