2010-04-23 4 views
1

J'ai besoin d'un moyen de suivre toutes les allocations dans une application .NET qui se produisent au cours d'une seule étape dans le processus de débogage de mon application. Je veux dire, quand je suis dans le débogueur, en passant par le code, je voudrais voir pour une seule étape quelle allocation a eu lieu. Existe-t-il un outil ou un moyen de le faire? J'ai essayé plusieurs profileurs de mémoire, y compris le profileur CLR, JetBrains et .NET Memory Profiler 3.5 et aucun d'entre eux ne semble offrir ce genre de fonctionnalité.Attribution de profils .NET

Répondre

0

Vous pouvez utiliser WinDBG avec quelque chose comme ça

.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" 

Cela devrait briser sur tous les AllocateObject/FastAllocateObject et vider MethodTable passé à ces fonctions dans log.txt .. Il va probablement être très lent que le nombre de alloué les objets augmentent