c# - 我如何分析 C# prodump 崩溃转储文件,异常来自 CLR?

标签 c# clr windbg dump procdump

<分区>

您好,我是检查故障转储文件的新手,我需要帮助或方法。 我可以看到异常来自 CLR 和 "clr exception - code e0434352(first chance)" 我已经附上转储文件驱动器可以在这里下载 https://drive.google.com/open?id=0BzWisplLq-PqLXppb1IzMV9VVGs

感谢任何帮助。

最佳答案

最基本的分析是 !analyze -v,它已经对您的情况有所帮助。确保您的 symbols are correct第一的。所以以下3条命令足以找出异常:

0:000> .symfix
0:000> .reload
0:000> !analyze -v
[...]
CLR_EXCEPTION
    Tid    [0x0]
    Frame  [0x00]

    String [System.ArgumentNullException]
    Failure Bucketing
    Data Bucketing

BUGCHECK_STR:  CLR_EXCEPTION_System.ArgumentNullException    
DEFAULT_BUCKET_ID:  CLR_EXCEPTION_System.ArgumentNullException
[...]

对于 .NET,还有一个名为 的扩展名这可以帮助:

0:000> .loadby sos clr
0:000> !pe
Exception object: 00000000045ff3b8
Exception type:   System.ArgumentNullException
Message:          Value cannot be null.
InnerException:   <none>
StackTrace (generated):
    SP               IP               Function
    00000000003EDC20 000007FEDB83F49D System_Core_ni!System.Linq.Enumerable.SequenceEqual[[System.Byte, mscorlib]](System.Collections.Generic.IEnumerable`1<Byte>, System.Collections.Generic.IEnumerable`1<Byte>, System.Collections.Generic.IEqualityComparer`1<Byte>)+0x22d

StackTraceString: <none>
HResult: 80004003

您可能还需要调用堆栈:

0:000> !clrstack
The version of SOS does not match the version of CLR you are debugging.  Please
load the matching version of SOS for the version of CLR you are debugging.
CLR Version: 4.0.30319.17929
SOS Version: 4.6.1590.0
OS Thread Id: 0x1b50 (0)
        Child SP               IP Call Site
00000000003edb38 0000000077c7bd7a [HelperMethodFrame: 00000000003edb38] 
00000000003edc20 000007fedb83f49c System.Linq.Enumerable.SequenceEqual[[System.Byte, mscorlib]](System.Collections.Generic.IEnumerable`1, System.Collections.Generic.IEnumerable`1, System.Collections.Generic.IEqualityComparer`1)
00000000003edc90 000007fe8d6be73f ILS.MasterController+c__DisplayClass4f.b__4d()
00000000003edd40 000007fedf9c971c System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
00000000003edda0 000007fedf9c9587 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
00000000003ede00 000007fedf9aa551 System.Windows.Threading.DispatcherOperation.InvokeImpl()
00000000003edec0 000007feeadaf8a5 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
00000000003ee020 000007feeadaf609 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
00000000003ee050 000007feeadaf5c7 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
00000000003ee0a0 000007fedf9aa181 System.Windows.Threading.DispatcherOperation.Invoke()
00000000003ee120 000007fedf9c74b1 System.Windows.Threading.Dispatcher.ProcessQueue()
00000000003ee1e0 000007fedf9c7813 System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
00000000003ee2a0 000007fedf9c994a MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
00000000003ee350 000007fedf9c97d0 MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
00000000003ee3a0 000007fedf9c95fe System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
00000000003ee400 000007fedf9c9587 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
00000000003ee460 000007fedf9c692c System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
00000000003ee500 000007fedf9c8e60 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
00000000003ee600 000007fedfb6e6e7 DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int32, Int64, Int64)
00000000003ee898 000007feec01482e [InlinedCallFrame: 00000000003ee898] MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
00000000003ee898 000007fedf9d39e0 [InlinedCallFrame: 00000000003ee898] MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
00000000003ee870 000007fedf9d39e0 DomainBoundILStubClass.IL_STUB_PInvoke(System.Windows.Interop.MSG ByRef)
00000000003ee940 000007fedf9c5eb2 System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
00000000003ee9e0 000007fedc3172da System.Windows.Application.RunInternal(System.Windows.Window)
00000000003eea80 000007fedc316bd7 System.Windows.Application.Run()
00000000003eeac0 000007fe8c8d0107 ILS.App.Main()
00000000003eedf0 000007feebf6f713 [GCFrame: 00000000003eedf0] 

关于c# - 我如何分析 C# prodump 崩溃转储文件,异常来自 CLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41500260/

相关文章:

c# - 数组帮助索引超出范围异常未处理

c# - 在 C++/CLI 中包装 native C++ 结构

regex - 分数的 CLR 正则表达式

.net - 字典在 CLR 调试器 (DbgCLR) 中看起来很难看

windows-7 - 安装了Win7 SDK。找不到 winDbg

c# - 图形性能改进/GDI 替代方案?

c# - 任何引用/MSDN 教程显示对 "if (!condition)"或 "if (condition == false)"的支持?

C# - 在流畅的界面中从列表中添加值

debugging - 使用WinDbg,我可以在进程运行时修改内存中的项目吗?

stack - WinDBG 显示不完整的堆栈