iis – 如何调试w3wp.exe随机崩溃的原因?

前端之家收集整理的这篇文章主要介绍了iis – 如何调试w3wp.exe随机崩溃的原因?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在主生产服务器上,IIS工作进程有时会崩溃.从事件查看器中我获得以下信息.

Faulting application name: w3wp.exe,version: 7.5.7601.17514,time
stamp: 0x4ce7a5f8 Faulting module name: KERNELBASE.dll,version:
6.1.7601.17651,time stamp: 0x4e211319 Exception code: 0xe053534f Fault offset: 0x0000b9bc Faulting process id: 0x%9 Faulting
application start time: 0x%10 Faulting application path: %11 Faulting
module path: %12 Report Id: %13

这在prod服务器上随机发生,我无法在其他任何地方重新创建此崩溃.这种情况发生在IIS 6上,我们最近转移到了Windows Server 2008和IIS 7.5,并且崩溃也发生在那里.

如何找到这个的根本原因?

解决方法

Tess Ferrandez的博客包含了一个分步指南:

https://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx

基本上,您将设置DebugDiag 1.2 x64以触发该异常代码,并创建一个完整的userdump.创建转储后,您可以使用DebugDiag为您分析转储.虽然有这个特殊的例外,你可能需要使用WinDbg SOS.

一些更相关的信息:

“对于大多数人可能知道的堆栈溢出,最常见的原因是我们处于某种类型的递归循环中,所以我们真正想知道的是这个堆栈上的内容……它出现的原因是什么只是地址而不是方法名称,因为debug diag不理解.net所以我们必须将转储带到windbg进行分析并检查.net堆栈.

“在windbg中我们可以加载sos(.loadby sos mscorwks)并在活动堆栈上运行!clrstack来获取callstack.”

(如果您运行的是.NET 4,则加载sos的命令为:.loadby sos clr)

最终,您正在寻找的是导致递归的应用程序中的违规代码.加载SOS时出现在WinDbg中的方法名称可能会让您指向正确的方向.

猜你在找的asp.Net相关文章