加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何调试w3wp clr.dll错误

发布时间:2020-12-15 19:04:56 所属栏目:asp.Net 来源:网络整理
导读:我的客户端在两个生产服务器上安装了一个ASP.NET应用程序(与NLB平衡,但这是不相关的)。 两个服务器每3-4小时崩溃,并发生以下事件查看器记录的错误: Faulting application name: w3wp.exe,version: 7.5.7601.17514,time stamp: 0x4ce7afa2 Faulting module
我的客户端在两个生产服务器上安装了一个ASP.NET应用程序(与NLB平衡,但这是不相关的)。
两个服务器每3-4小时崩溃,并发生以下事件查看器记录的错误:

Faulting application name: w3wp.exe,version: 7.5.7601.17514,time stamp: 0x4ce7afa2
Faulting module name: clr.dll,version: 4.0.30319.18034,time stamp: 0x50b5a783
Exception code: 0xc00000fd Fault offset: 0x000000000001a840
Faulting process id: 0xd50
Faulting application start time: 0x01ce97fe076d27b4
Faulting application path: c:windowssystem32inetsrvw3wp.exe
Faulting module path: C:WindowsMicrosoft.NETFramework64v4.0.30319clr.dll Report Id: e0c90a5f-0455-11e3-8f0e-005056891553

我不知道如何调试或从哪里开始。当崩溃即将发生时,服务器处理器使用率跳转到100%,并保持在那里。进程故障是w3wp.exe。我甚至不确定我的代码是否生成错误或不。这是IIS 7.5。任何指针将非常感谢。

解决方法

看起来你有一个StackOverflow异常,这是由无界递归(一个函数反复调用自己,等等)引起的。这不能被常规try / catch块捕获。你可以使用DebugDiag和WinDbg跟踪问题。

DebugDiag可以配置为在发生StackOverflowException时生成崩溃转储。下载https://www.microsoft.com/en-us/download/details.aspx?id=49924。

>打开DebugDiag,然后单击添加规则。
>“崩溃”应该已经被选中。点击下一步。
>选择“特定IIS Web应用程序池”,然后单击下一步。
>选择应用程序池,然后单击下一步。
>您应该在高级配置窗口。单击高级设置下的例外。
>单击添加例外并选择堆栈溢出,其操作类型为完全用户转储
>单击确定并保存并关闭。

下次发生StackOverflowException时,您将有一个崩溃转储。现在需要解释dump文件。

用于Windows的调试工具是Windows SDK的一部分,可以在http://msdn.microsoft.com/en-US/windows/hardware/gg463009/下载。

>要使用WinDbg,您需要获取符号文件。 Download the symbol files并将其放在本地文件夹中。
>打开WinDbg。在“文件”菜单上,单击“符号文件路径”。
>在符号路径框中,文档说要键入以下命令:SRV *您的本地文件夹的符号* http://msdl.microsoft.com/download/symbols,但是我只是放在本地文件夹的符号和它工作正常。
>退出并再次打开WinDbg,并打开崩溃转储并找到由DebugDiag创建的转储文件。
>在命令行中,键入.loadby sos clr
>现在输入!CLRStack

在结果中,应该清楚问题是什么(您可能会看到一个BUNCH行显示重复被调用的函数)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读