如何调试W3WP clr.dll错误 [英] How to debug w3wp clr.dll error

查看:1888
本文介绍了如何调试W3WP clr.dll错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的客户有安装在两台生产服务器的ASP.NET应用程序(与NLB平衡,但这是无关)。
这两台服务器崩溃,每3-4小时以下事件查看器中记录的错误:

My client has an ASP.NET application installed on two production servers (balanced with NLB, but that's irrelevant). Both servers crash every 3-4 hours with the following event viewer logged error:

错误的应用程序名:w3wp.exe,版本:7.5.7601.17514,时间戳:0x4ce7afa2结果
  错误模块名称:clr.dll,版本:4.0.30319.18034,时间戳:0x50b5a783结果
  异常code:0xc00000fd故障偏移:0x000000000001a840结果
  出错进程ID:0xd50结果
  错误的应用程序启动时间:0x01ce97fe076d27b4​​结果
  错误的应用程序路径:C:\\ WINDOWS \\ SYSTEM32 \\ INETSRV \\ w3wp.exe的结果
  错误模块路径:C:\\ WINDOWS \\ Microsoft.NET \\ Framework64 \\ v4.0.30319 \\ clr.dll报告编号:e0c90a5f-0455-11e3-8f0e-005056891553

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:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Report Id: e0c90a5f-0455-11e3-8f0e-005056891553

我不知道如何调试或从哪里开始。当碰撞即将发生在服务器处理器使用率跳转到100%,并在那里停留。有过错的过程是w3wp.exe的。我甚至不知道如果我的code生成错误与否。这是IIS 7.5。任何指针将大大AP preciated。

I have no idea how to debug or where to start. When the crash is about to happen the server processor usage jumps to 100% and stays there. The process at fault is w3wp.exe. I'm not even sure if my code is generating the error or not. It's IIS 7.5. Any pointers would be greatly appreciated.

推荐答案

它看起来像你有一个计算器例外,这是由无限递归(一个函数一边喊本身等)引起的。这不能定期try / catch块被捕获。您可以使用追踪问题下的 DebugDiag资料的WinDbg

It looks like you have a StackOverflow Exception, which is caused by unbounded recursion (a function repeatedly calling itself, etc). This can't be caught by regular try/catch block. You can track the problem down using DebugDiag and WinDbg.

DebugDiag资料可以构造成当StackOverflowException发生,以产生一个故障转储。下载的<一个href=\"http://www.microsoft.com/en-us/download/details.aspx?id=42933\">http://www.microsoft.com/en-us/download/details.aspx?id=42933.

DebugDiag can be configured to generate a crash dump when the StackOverflowException occurs. Download at http://www.microsoft.com/en-us/download/details.aspx?id=42933.


  1. 开启DebugDiag资料,然后单击添加规则。

  2. 撞车应该已经被选中。点击下一步。

  3. 选择一个特定的IIS Web应用程序池,然后单击下一步。

  4. 选择应用程序池,然后单击下一步。

  5. 您应该在高级配置窗口。点击高级设置下例外。

  6. 单击添加例外,并选择堆栈溢出,与完整用户转储
  7. 的操作类型
  8. 单击确定,然后保存并关闭了。

一个StackOverflowException发生下一次,你就会有一个崩溃转储。我们需要跨preT转储文件。

Next time a StackOverflowException occurs, you'll have a crash dump. Now to need to interpret the dump file.

Windows调试工具是Windows SDK的一部分,可以在<一个下载href=\"http://msdn.microsoft.com/en-US/windows/hardware/gg463009/\">http://msdn.microsoft.com/en-US/windows/hardware/gg463009/.

Debugging tools for Windows is part of the Windows SDK and can be downloaded at http://msdn.microsoft.com/en-US/windows/hardware/gg463009/.


  1. 要使用WinDbg,你需要得到的符号文件。 下载符号文件并把它们放在一个本地文件夹。

  2. 打开了WinDbg的。在文件菜单上,单击符号文件路径。

  3. 在符号路径中,将文件说,键入以下命令: SRV *为符号的本地文件夹*的http://msdl.microsoft.com/download/symbols ,但是我只是把在符号的本地文件夹,它工作得很好。

  4. 将退出并重新打开WinDbg中,开放崩溃转储和定位,是由DebugDiag资料创建转储文件。

  5. 在命令行中键入 .loadby SOS CLR

  6. 现在,键入!CLRStack

  1. To use WinDbg, you'll need to get the symbols files. Download the symbol files and put them in a local folder.
  2. Open up WinDbg. On the File menu, click Symbol File Path.
  3. In the Symbol path box, the documentation says to type the following command: SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols, however I just put in the local folder for the symbols and it worked fine.
  4. Exit out and open WinDbg again, and Open Crash Dump and locate the dump file that was created by DebugDiag.
  5. In the command line, type .loadby sos clr
  6. Now type !CLRStack

在结果中,应该明确的问题是什么(你可能会看到显示一再被调用的函数(S)线捆绑)。

In the results, it should be clear what the problem is (you'll likely see a BUNCH of lines showing the function(s) that was repeatedly being called).

这篇关于如何调试W3WP clr.dll错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆