Asp.net 如何在应用程序池回收后获取特定异常的内存转储

Asp.net 如何在应用程序池回收后获取特定异常的内存转储,asp.net,windbg,memory-dump,debugdiag,Asp.net,Windbg,Memory Dump,Debugdiag,在我们的应用程序池回收WCF服务后,在访问时抛出FileLoadException。回收应用程序池有助于。有时错误会消失,而不需要回收。我问了这个问题 我在这里问了第一个问题: 由于我们没有其他的想法如何分析这个问题,我们希望得到内存转储,其中有一个例外 但我不知道如何配置adplus或debugdiag以自动附加到新进程(回收后)并在特定异常时生成崩溃转储。这是可能的吗?您可以使用在第一次出现异常时进行完全内存转储: procdump -ma -e 1 -f FileLoadException

在我们的应用程序池回收WCF服务后,在访问时抛出FileLoadException。回收应用程序池有助于。有时错误会消失,而不需要回收。我问了这个问题 我在这里问了第一个问题:

由于我们没有其他的想法如何分析这个问题,我们希望得到内存转储,其中有一个例外

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

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

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

但不幸的是,您可能必须手动附加它,因为我不知道任何现成的解决方案。我们有时会使用PowerShell脚本执行此类任务。

使用WinDbg,连接它,并通过菜单“调试>事件筛选器…”添加事件筛选器 单击“添加…”,根据,错误代码应为
0x8013621
,但可能不同,这可能是一个问题,然后输入
gc
。 否则,我预计WinDbg会在异常发生时中断,然后您可以执行转储:

.dump /ma c:\dumps\mycrash.dmp
关于如何调试此问题,您可能已经阅读了以下页面:
而且,

但是附加到什么?我需要获取应用程序池回收后创建的新进程的转储。连接到主机服务,您需要使用
启用子进程调试。childdbg 1
有一个相关的@Peri,我还没有尝试使用.net,但不确定这是否100%有效。一位发言人说这是不可能的,但在2014年可能会有所不同关于如何创建转储,不要忘记从系统中复制所有SOS.dll和mscordacwks.dll,以便能够分析转储。