I am looking for a way to locate all current instances on the heap of types that implement a given interface (during WinDbg debugging that is). As interfaces are not types in the sense that you can create instances of an interface, they obviously do not show up when inspecting the heap. I.e. !dumpheap
is of little help here.
However, !dumpmt -md
on a given MT lists the number of IFaces
in IFaceMap
. As far as I can tell this number seems to indicate if the type implements one or more interfaces or not. When using the -md
flag methods on the type are also listed.
Unfortunately the !dumpmd
doesn't tie a given method to an interface as far as I can tell, so this cannot be used to establish the implemented interfaces.
I assume this information is available somewhere in memory, but I am not sure where to look. Any input is highly appreciated.
Have you tried
!dumpheap -type IFaces
It will show the method tables too. You can dig deeper from there.
A few years ago, I was desperate for some information like this. I ended up creating a treeview that would only appear when you used an obscure option for starting the app. When I clicked "refresh", it would use reflection to travel through all the properties of the root class instance. If it found a property that was a collection or held other properties, it would recursively call into them. The end result was that a tree of the instance data at that point was available for perusal.
The main points to this approach are
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With