gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:02:42 24 4
gpt4 key购买 nike

我的客户端在两台生产服务器上安装了 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:\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。我什至不确定我的代码是否生成错误。这是 IIS 7.5。任何指示将不胜感激。

最佳答案

看起来您有一个 StackOverflow 异常,这是由无界递归(函数重复调用自身等)引起的。这不能被常规的 try/catch block 捕获。您可以使用DebugDiagWinDbg来跟踪问题。

可以将 DebugDiag 配置为在发生 StackOverflowException 时生成故障转储。下载地址https://www.microsoft.com/en-us/download/details.aspx?id=58210 .

  1. 打开 DebugDiag 并点击“添加规则”。
  2. “崩溃”应该已被选择。单击“下一步”。
  3. 选择“特定 IIS Web 应用程序池”并点击“下一步”。
  4. 选择应用程序池,然后单击“下一步”。
  5. 您应该位于高级配置窗口中。单击“高级设置”下的“异常(exception)”。
  6. 点击“添加异常”并选择“Stack Overflow”,操作类型为“完整用户转储”
  7. 点击“确定”并保存并关闭。

下次发生 StackOverflowException 时,您将获得故障转储。现在需要解释转储文件。

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

  1. 要使用 WinDbg,您需要获取符号文件。 Download the symbol files并将它们放在本地文件夹中。
  2. 打开 WinDbg。在"file"菜单上,单击“符号文件路径”。
  3. 在“符号路径”框中,文档要求键入以下命令:SRV*符号的本地文件夹*http://msdl.microsoft.com/download/symbols,但我只是将符号放入本地文件夹中,效果很好。
  4. 退出并再次打开 WinDbg,然后打开故障转储并找到 DebugDiag 创建的转储文件。
  5. 在命令行中输入.loadby sos clr
  6. 现在输入!CLRStack

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

关于asp.net - 如何调试 w3wp clr.dll 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com