抓到一个dump文件之后,很多托管命令不能用,查看托管线程的时候,现如下显示:
XXXX表示这个托管线程已经被结束了,同时在等待GC的回收。
这个时候,用~[N]s命令来切换线程是不可以的。
如果是Framework 1.1下,可以使用!dumpallexceptions (!dae)来查看所有的Exception。
2.0的SOS下面,咋同样可以使用类似的命令:
然后用!pe address打印出相应命令的详细信息。
- System.ExecutionEngineException
- System.StackOverflowException
- System.OutOfMemoryException
这三个异常的信息,是在每个clrstack里面都有的。worker process在创建的时候就有了。
最后,可以查看某个具体的异常的详细信息:
也可以用一个DDL来打印出所有的同一个类型的Exception的信息:
0:000> .foreach(myVariable {!dumpheap -type System.ArgumentNullException -short}){!pe myVariable;.echo **}
2008.12.31 夜。