由于.net异常与任何其他异常一样是一个.net对象,因此当您(或您调用的某些代码)调用new XXException()时,它会存储在GC堆中。这意味着,如果您有一个进程的内存转储,您可以转储所有最近发生的异常,或者更确切地说,所有尚未被垃圾收集的异常。

如果您在windbg中加载了sos(.loadby sos mscorwks),则执行此操作非常简单

0:015> !dumpheap -type Exception------------------------------Heap0Address       MT     Size
02ea6b0c 79330a80
7202ea75f0 7930eab476
06f57aa4 7930eab4
7606f5829c 7930eab47606f58a94 7930eab47606f5928c 7930eab47606f59a84 7930eab47606f5a27c 7930eab47606f5aa74 7930eab47606f5b26c 7930eab47606f5ba64 7930eab47606f5c25c 7930eab47606f5ca54 7930eab47606f5d24c 7930eab476total319objects------------------------------total656objects
Statistics:
MT Count TotalSize Class Name
79333dc0
1 12System.Text.DecoderExceptionFallback
79333d7c
1 12System.Text.EncoderExceptionFallback
793172f8
2 64System.UnhandledExceptionEventHandler
79330c30
1 72System.ExecutionEngineException
79330ba0
1 72System.StackOverflowException
79330b10
1 72System.OutOfMemoryException
79330a80
1 72System.Exception
79330cc0
2 144System.Threading.ThreadAbortException
7930eab4
646 49096System.IO.DirectoryNotFoundException
Total
656 objects

标签: none

添加新评论