托管线程退出之后Dump文件特征

抓到一个dump文件之后,很多托管命令不能用,查看托管线程的时候,现如下显示:

托管线程退出之后Dump文件特征_第1张图片

 

XXXX表示这个托管线程已经被结束了,同时在等待GC的回收。

这个时候,用~[N]s命令来切换线程是不可以的。

如果是Framework 1.1下,可以使用!dumpallexceptions (!dae)来查看所有的Exception。

2.0的SOS下面,咋同样可以使用类似的命令:

托管线程退出之后Dump文件特征_第2张图片

然后用!pe address打印出相应命令的详细信息。

  • System.ExecutionEngineException
  • System.StackOverflowException
  • System.OutOfMemoryException
  • 这三个异常的信息,是在每个clrstack里面都有的。worker process在创建的时候就有了。

    最后,可以查看某个具体的异常的详细信息:

    托管线程退出之后Dump文件特征_第3张图片

     

    也可以用一个DDL来打印出所有的同一个类型的Exception的信息:

    0:000> .foreach(myVariable {!dumpheap -type System.ArgumentNullException -short}){!pe myVariable;.echo **}

     

    2008.12.31 夜。

    你可能感兴趣的:(托管线程退出之后Dump文件特征)