Вам понадобятся WinDbg (Инструменты отладки для Windows) и DebugDiag.
- Установите DebugDiag и WinDbg
- Убедитесь, что вы скопировали SOS.dll соответствующей платформы в каталог WinDbg.
- Добавить правило для перехвата процессов IIS / COM +
- При первых исключениях создайте полный дамп пользователя.Ограничение 10
- Откройте веб-сайт и посмотрите на DebugDiag, вы увидите, что он начинает принимать полные дампы.
- После того, как у вас есть несколько дампов памяти, загрузите WinDbg и нажмите File->Откройте Crash Dump и загрузите один из дампов памяти.
- Тип
.load sos
- Тип
!clrstack
- Вы получите трассировку стека ошибки, например:
0:016> .load sos
0:016> !clrstack
PDB symbol for clr.dll not loaded
OS Thread Id: 0xa60 (16)
Child SP IP Call Site
01d2eb5c 7c81a251 [HelperMethodFrame: 01d2eb5c] System.Diagnostics.Debugger.LaunchInternal()
01d2ebac 7a0e0166 System.Diagnostics.Debugger.Launch()*** WARNING: Unable to verify checksum for mscorlib.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for mscorlib.ni.dll
01d2ebd8 04470176 ebiz.Global.Application_Start(System.Object, System.EventArgs)
01d2f1f8 791421bb [DebuggerU2MCatchHandlerFrame: 01d2f1f8]
01d2f1c4 791421bb [CustomGCFrame: 01d2f1c4]
01d2f198 791421bb [GCFrame: 01d2f198]
01d2f17c 791421bb [GCFrame: 01d2f17c]
01d2f3a0 791421bb [HelperMethodFrame_PROTECTOBJ: 01d2f3a0] System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
01d2f41c 79b3d689 System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
01d2f470 79b3d37c System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
01d2f4ac 79b3bfed System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
01d2f4d0 79b43284 System.Reflection.MethodBase.Invoke(System.Object, System.Object[])
01d2f4dc 67894f4d System.Web.HttpApplication.InvokeMethodWithAssert(System.Reflection.MethodInfo, Int32, System.Object, System.EventArgs)*** WARNING: Unable to verify checksum for System.Web.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for System.Web.ni.dll
01d2f500 678951cb System.Web.HttpApplication.ProcessSpecialRequest(System.Web.HttpContext, System.Reflection.MethodInfo, Int32, System.Object, System.EventArgs, System.Web.SessionState.HttpSessionState)
01d2f550 67b34175 System.Web.HttpApplicationFactory.FireApplicationOnStart(System.Web.HttpContext)
01d2f564 672bfe1c System.Web.HttpApplicationFactory.EnsureAppStartCalled(System.Web.HttpContext)
01d2f59c 672bfd3d System.Web.HttpApplicationFactory.GetApplicationInstance(System.Web.HttpContext)
01d2f5ac 672fbf28 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
01d2f5e0 672fbccd System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
01d2f5f0 672fb2cd System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
01d2f5f4 6791c30c [InlinedCallFrame: 01d2f5f4]
01d2f668 6791c30c DomainNeutralILStubClass.IL_STUB_COMtoCLR(Int32, Int32, IntPtr)
01d2f7fc 791425a1 [GCFrame: 01d2f7fc]
01d2f86c 791425a1 [ContextTransitionFrame: 01d2f86c]
01d2f8a0 791425a1 [GCFrame: 01d2f8a0]
01d2f9f8 791425a1 [ComMethodFrame: 01d2f9f8]
В любом случае, вы можете видеть, что Debugger.Launch()
находится прямо наверху, и низко, и вот, мой код имел его. Кажется, что IIS это совсем не нравитсяесли это ваша первая строка кода!