Hello, I am new to kernel dump analysis so pardon me if you find these questions trivial. I have been working on user dumps for some time and there are few common steps that i would take as soon as i get my hands on any user dump. These steps will give some visibility of what kind of problem is at hand.
1. First find out what kind of dump is this, crash dump / hang dump.
2. Find out how the dump was collected, adplus / cbd / debugdiag / Dr Watson.
3. Full dump / mini dump || managed / native process?
4. Here are few commands which will help me get more information from the dump -
= Load sos if managed dump.
Native dump analysis common commands
===================================
- ~*kb 100 [will show all the stack of all the threads in the dump]
- !runaway [will show the threads in order of CPU time consumed], which will later on help me take a detailed look at the thread which has consumed highest quantum.
- ~[thread]s - this will switch the context to any thread that i want to look in detail.
- !heap to find out which component is holding on to memory
- lm - to find out the loaded modules and see if there are any modules which are old enough to cause problem or see their versions to see if we have problematic versions.
- !locks to display all the locks.
- !vm to see memory usage
Managed Dump analysis common commands
=====================================
!dumpheap -stat - to check memory usage of all the managed objects.
~*e!clrstack - to see the managed call stack of all the threads
!syncblk - to find any synchronization waits.
!do to dump any managed object and then drill into.
!dae to display all excetions which have not yet been cleaned up
!dso to see all the objects on a managed thread
!GCroot <object addr> this will show rooted objects on multiple threads...
Now this is no where a complete list, but these are enought to give you a sense of what kind of problem you are dealing with. I am currently looking for similar information, break down approach to analyzing kernel dumps.
I want to be able to switch process context, but i most of the times get an error :
0: kd> .process 905249e8
Process 905249e8 has invalid page directories
Dont know what i can do with these.
I want to be able to find out all the threads in the dump... what is the command. ~*k does not work.
What is the command to find the crashing thread / component.
how do enable a FULL kernel dump, i see no option for a FULL dump in "Startup and recovery" >> settings
Basically looking for commands which will help me get started with the analysis. Thanks in advance guys,.