应用开发

如何把 .NET 进程中的所有托管异常找出来?

时间:2010-12-5 17:23:32  作者:应用开发   来源:数据库  查看:  评论:0
内容摘要:大家应该知道 .NET异常 本质上就是一个 Object 对象,也就是说只要你执行了 new XXException() 语句,那么它就会分配到 GC Heap 上。这也就意味着,如果你有一个进程的d

大家应该知道 .NET异常 本质上就是何把一个 Object 对象,也就是程中常找出说只要你执行了 new XXException() 语句,那么它就会分配到 GC Heap 上。有托

这也就意味着,管异如果你有一个进程的何把dump文件,那你就可以从dump中导出程序最近都抛了什么异常,程中常找出换句话说只要这些异常没有被 GC 回收,站群服务器有托你都可以给它找出来。管异

实现起来很简单,何把只要在 windbg 中输入如下命令即可。程中常找出

0:015> !dumpheap -type Exception ------------------------------ Heap 0 Address       MT     Size 02ea6b0c 79330a80       72 02ea75f0 7930eab4       76 … 06f57aa4 7930eab4       76 06f5829c 7930eab4       76 06f58a94 7930eab4       76 06f5928c 7930eab4       76 06f59a84 7930eab4       76 06f5a27c 7930eab4       76 06f5aa74 7930eab4       76 06f5b26c 7930eab4       76 06f5ba64 7930eab4       76 06f5c25c 7930eab4       76 06f5ca54 7930eab4       76 06f5d24c 7930eab4       76 total 319 objects ------------------------------ total 656 objects Statistics:       MT    Count    TotalSize Class Name 79333dc0        1           12 System.Text.DecoderExceptionFallback 79333d7c        1           12 System.Text.EncoderExceptionFallback 793172f8        2           64 System.UnhandledExceptionEventHandler 79330c30        1           72 System.ExecutionEngineException 79330ba0        1           72 System.StackOverflowException 79330b10        1           72 System.OutOfMemoryException 79330a80        1           72 System.Exception 79330cc0        2          144 System.Threading.ThreadAbortException 7930eab4      646        49096 System.IO.DirectoryNotFoundException Total 656 objects 

如果你想看某一个具体异常的有托详细信息,可以使用命令 !pe 02ea6b0c 。管异

!pe 02ea6b0c Exception object: 02ea6b0c Exception type: System.Exception Message: The email entered is not a valid email address InnerException: <none> StackTrace (generated):     SP       IP       Function     024AF2C8 0FE3125E App_Code_da2s7oyo!BuggyMail.IsValidEmailAddress(System.String)+0x76     024AF2E8 0FE31192 App_Code_da2s7oyo!BuggyMail.SendEmail(System.String,何把 System.String)+0x4a StackTraceString: <none> HResult: 80131500 There are nested exceptions on this thread. Run with -nested for details 

那现在问题来了,我想看所有异常的程中常找出详细信息怎么办呢?人肉一个一个的香港云服务器用 !pe 命令去执行,那将会多恶心。有托。。所以友好的方式就是写脚本去提速,这里我使用 .foreach 命令。

.foreach (ex { !dumpheap -type Exception -short}){ .echo "源码下载
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap