【问题标题】:w3p.exe terminated due to stack overflow - how to track down the issue?w3p.exe 由于堆栈溢出而终止 - 如何追踪问题?
【发布时间】:2010-11-24 16:41:49
【问题描述】:

我们在生产中遇到堆栈溢出 ~ 每天 2-4 次

我们无法在开发环境中重现此问题,鉴于这是一个任何时候都可能有大约 100 个并发用户的网络应用程序,我正在努力找出如何最好地追踪它。

无论如何可以从事件查看器获取更多信息 - 很高兴安装某种形式的侦听器工具 - 即使我可以获得线程标识(设置为当前用户)也会有所帮助 - 尽管 dll + 类/ 功能会很棒!

还是只是挖掘、尝试复制或添加一些跟踪?

【问题讨论】:

  • 你有异常的堆栈跟踪来尝试查明位置吗?
  • 你有什么记录方式?它是可配置的吗?你能把旋钮调到 11 吗?
  • 我们有一个全局异常处理程序——但这是一个堆栈溢出,所以绕过标准的 asp.net 异常处理(application_erro / elmah / etc)

标签: asp.net debugging stack-overflow


【解决方案1】:

您可以在生产 IIS 上运行一个 IISDiag 工具来分析崩溃。这里有一些信息:

http://support.microsoft.com/kb/919790

这不仅仅是为了泄漏——它会转储诸如 CORE 文件之类的内容,供您稍后分析。

【讨论】:

    【解决方案2】:

    点击Elmah 进行异常记录。使用 Elmah 添加未处理异常的日志记录只需要您将程序集放入应用程序 bin 文件夹并在 Web 配置中添加 Elmah 部分以实现基本日志记录方案。

    如果日志不足以确定错误源,您可以使用 DebugDiag 创建失败应用程序状态的内存转储。有一个使用指南here

    【讨论】:

      【解决方案3】:

      您可以在 global.asax 文件中放置一个全局异常处理程序。放入异常处理程序,然后将堆栈跟踪写入事件日志。 This 文章对如何做到这一点有一个很好的总结,尽管我相信还有很多其他的。一旦您知道错误发生在哪里,您就可以在发生错误的函数中添加一些额外的日志记录,并希望缩小范围,直到找到具体问题。

      【讨论】:

        猜你喜欢
        • 2010-10-15
        • 2019-05-31
        • 2019-07-02
        • 2016-03-07
        • 1970-01-01
        • 2023-03-05
        • 2017-05-02
        • 2012-12-01
        • 1970-01-01
        相关资源
        最近更新 更多