应用程序池回收后如何在特定的Exception上获取内存转储

时间:2014-02-07 10:29:16

标签: asp.net windbg memory-dump debugdiag

我们的应用程序池回收后,我们的WCF服务在访问时抛出FileLoadException。回收应用程序池有帮助。有时错误会在没有回收的情况下消失我问了这个问题 我在这里问了第一个问题:FileLoadException when accessing WCF service

由于我们没有其他想法如何分析这个问题,我们希望在其中获得内存转储。

但我不知道如何配置adplus或debugdiag以自动附加到新进程(回收后)并在特定异常上生成崩溃转储。这甚至可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Procdump在第一次机会异常时进行完全内存转储:

procdump -ma -e 1 -f FileLoadException w3wp.exe

但不幸的是,你可能不得不手动附加它,因为我不知道任何开箱即用的解决方案。我们有时会使用PowerShell脚本来执行此类任务。

答案 1 :(得分:2)

使用WinDbg,附加它并通过菜单'Debug> Event Filters ...'添加事件过滤器 点击“添加...”,根据MSDN page,错误代码应为0x80131621,但可能会有所不同,可能会出现问题,然后输入gc。 否则我希望WinDbg在发生异常时中断,然后你可以进行转储:

.dump /ma c:\dumps\mycrash.dmp

您可能已经查看了以下有关如何调试此问题的页面: http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspxhttp://bradwilson.typepad.com/blog/2007/12/we-were-crashin.htmlrelated SO post