In WinDbg, I used !name2ee to find a baseclass's EEClass and MethodTable. How can I find all instances that inherit from that specific type?
Find all instances that inherit from base class
671 Views Asked by avivr At
1
There are 1 best solutions below
Related Questions in DEBUGGING
- Call from component to parent with $emit
- Best way to implement history function inside Vue.js modal
- <transition> can only be used on a single element
- Vue.js page transition fade effect with vue-router
- Change component and update data (ajax) when vue-router item is clicked
- VueJS Adding data from query parameters
- Control modals using vue router
- Vue router shows lazy-loaded route components only once
- How to remove the hash # when the base URL is not root?
- Pass global JSON to Vue app from flask webserver
Related Questions in CLR
- Call from component to parent with $emit
- Best way to implement history function inside Vue.js modal
- <transition> can only be used on a single element
- Vue.js page transition fade effect with vue-router
- Change component and update data (ajax) when vue-router item is clicked
- VueJS Adding data from query parameters
- Control modals using vue router
- Vue router shows lazy-loaded route components only once
- How to remove the hash # when the base URL is not root?
- Pass global JSON to Vue app from flask webserver
Related Questions in WINDBG
- Call from component to parent with $emit
- Best way to implement history function inside Vue.js modal
- <transition> can only be used on a single element
- Vue.js page transition fade effect with vue-router
- Change component and update data (ajax) when vue-router item is clicked
- VueJS Adding data from query parameters
- Control modals using vue router
- Vue router shows lazy-loaded route components only once
- How to remove the hash # when the base URL is not root?
- Pass global JSON to Vue app from flask webserver
Related Questions in SOS
- Call from component to parent with $emit
- Best way to implement history function inside Vue.js modal
- <transition> can only be used on a single element
- Vue.js page transition fade effect with vue-router
- Change component and update data (ajax) when vue-router item is clicked
- VueJS Adding data from query parameters
- Control modals using vue router
- Vue router shows lazy-loaded route components only once
- How to remove the hash # when the base URL is not root?
- Pass global JSON to Vue app from flask webserver
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I wish there is an easy answer and someone else can solve it easier than this.
Background information
dump all objects in a way you can get the addresses from the output:
!dumpheap -short
loop over all those objects
.foreach ( adr {!dumpheap -short}) { ... }
The method table will be the first pointer size bytes at the address of the object, so instead of
!do <address>
to find the method table, you can also do? poi(<address>)
.!dumpmt
does not list the base class, so you need to find it yourself. On 64 bit, the base class is 16 bytes away, so to get the type of a base class from an object address, you can do!dumpmt poi(poi(<address>)+0x10)
. You can repeat that to get the base-base class:!dumpmt poi(poi(<address>)+0x10)+0x10)
.You can repeat this until the pointer is 0x00000000, which means you have reached System.Object and there is no more base class.
Since you want to automate this process, you need to put that into a loop as well:
r$t0 =poi(<address>); .while(@$t0) { .if(@$t0 == <basemt>) {...}; r$t0=poi(@$t0+0x10);}
Do whatever you want with the address, e.g. just list it:
.echo ${adr}
or dump it:!do ${adr}
.Put it all together.
Example
Since I don't know what you're looking for, I'll use
Exception
as an example. And since there's always aStackOverflowException
,OutOfMemoryException
andExecutionEngineException
in any .NET program, it should at least find three objects if you try it.So the
<basemt>
parameter which I'm looking for is000007fef2776738
.The full statement is now (formatted for readability):
or (formatted for copy & paste):