w3p.exe由于堆栈溢出而终止 - 如何追踪问题?

时间:2010-11-24 16:41:50

标签: asp.net debugging stack-overflow

我们正在生产堆栈溢出~2-4次/天

我们无法在dev环境中重现这一点,因为这是一个可能同时拥有约100个并发用户的Web应用程序,我正在努力找出如何最好地跟踪它。

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

或者只是挖掘,尝试重现或添加一些追踪?

3 个答案:

答案 0 :(得分:2)

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

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

它不只是泄漏 - 它会转储类似CORE文件的东西,你可以在以后分析。

答案 1 :(得分:2)

Elmah上抓取异常日志记录。使用Elmah添加未处理异常的日志记录只需要将程序集放入应用程序bin文件夹,并在Web配置中添加Elmah部分以获取基本日志记录方案。

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

答案 2 :(得分:1)

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