我构建了一个很棒的小部件,让我们的指挥中心人员可以启动 ADPlus.exe 来捕获失败的 IIS 6 应用程序池的崩溃转储。它为我们做了一件了不起的工作。他们无需深入了解 WinDBG 即可捕获取证数据,而我可以整晚安睡,早上再分析它们。
缺点是我不得不将它部署到数百台服务器上。我宁愿将它部署到单个中央服务器,然后远程调用该进程。这意味着远程运行命令行,例如:
"C:\Program Files (x86)\Debugging Tools for Windows (x86)\adplus.exe" -crash -FullOnFirst -o D:\Captures -p 23740
在此之前,我还需要识别失败的工作进程的 PID。
最好的建议?
答案1
你可能想读
MSDN 博客:如何:在 IIS 7.0(及更高版本)上收集 IIS 工作进程的崩溃转储
它讨论了如何ADPlus
限制:
因为 ADPLUS 无法自动附加到新进程。您只能将 ADPLUS 附加到机器上已在运行的进程。
这对 IIS 工作进程来说是一个很大的限制,因为工作进程可能会根据应用程序池设置中的配置进行回收或关闭。ADPLUS 的另一个问题是,它会为 cdb.exe 启动一个新窗口,有人可能会意外关闭此窗口,这最终可能会导致工作进程本身被终止。
因此,您可能希望使用调试诊断或者只是满足于 Windows 转储崩溃的进程这一事实,你可以随时拾取它们:
我意识到它完全避开了你的问题;但希望是以一种好的方式。