如何使用ADPLUS _ONLY_获取MiniDumpOnSecond [英] How to use ADPLUS to _ONLY_ get MiniDumpOnSecond
问题描述
对于生产Win2003 Web服务器,我希望能够在w3wp.exe进程崩溃时始终记录minidump ...我已经阅读了ADPLUS的文档,并将xcopy部署到生产Web服务器,并从命令行启动adplus.exe,如下所示:
For a production Win2003 web server, I'd like to be able to allways log minidumps whenever the w3wp.exe processes crash...I've read the documentation for ADPLUS, and have xcopy-deployed it to the production web server, and have started adplus.exe from the command line as follows:
adplus.exe -crash -MiniOnSecond -NoDumpOnFirst -pmn w3wp.exe -o C:\转储
adplus.exe -crash -MiniOnSecond -NoDumpOnFirst -pmn w3wp.exe -o C:\Dumps
这会记录MiniOnSecond,但它也会首先记录完全转储 - 我不想要那些(它们是大胖文件,而且没有我需要的东西)。有没有人找到一种方法来获得-NoDumpOnFirst标志实际工作?另外,每次重启盒子时我都会喜欢这种行为 - 如何在不重新启动批处理文件的情况下完成这项工作?我读过有关Windows错误报告(WER)的文章,在Win2008R2服务器上实现这种行为是微不足道的 - 如何在2003服务器上运行?
This does log the "MiniOnSecond," but it is also logging full dumps on first--and I don't want those (they're big fat files, and don't have what I need). Has anyone found a way to get the "-NoDumpOnFirst" flag to actually work? Additionally, I'd like this behavior every time the box is rebooted--How can that be accomplished without running a batch file on-reboot? I've read about Windows Error Reporting (WER), and it is trivial to impliment this behavior on a Win2008R2 server--how to make that work on a 2003 server?
我已经阅读了ADPLUS和WER的文档 - 但我需要实际命令行和/或注册表设置的帮助才能在Win上捕获minidump 2003 Server。谢谢你的帮助!
I've read the documentation for both ADPLUS and WER--but I need help with the actually command line and/or registry settings to make capturing minidumps simple on a Win 2003 Server. Thanks for your help!
推荐答案
我玩的配置文件可以附加 -c
flag ...因为我最感兴趣的是在我的自定义COM组件中捕获错误,这些设置创建没有fulldump的minidump,并忽略CLR崩溃,并且不在IISReset上完全转储。
I played with the configuration file that can be attached with the -c
flag...since i'm mostly interested in catching errors in my custom COM components, these settings create minidumps without fulldumps, and ignore CLR crashes, and don't full-dump on IISReset.
要让它一直运行,请创建一个计划任务。从管理员提示符:
To have this run all the time, create a scheduled task. From an admin prompt:
schtasks /create /tn "Crash Dump Monitor w3wp" /tr "\"C:\Program Files\Debugging Tools for Windows (x86)\adplus.exe\" -c \"C:\Program Files\Debugging Tools for Windows (x86)\adplus_w3wp.xml\"" /sc ONSTART
将此文件另存为 C:\Program Files \Debugging Tools for Windows( x86)\ adplus_w3wp.xml
:
Save this file as C:\Program Files\Debugging Tools for Windows (x86)\adplus_w3wp.xml :
<ADPlus Version="2">
<!--
PURPOSE: Capture mini crash dumps in IIS 6.0. Do not capture full dumps
INSTRUCTIONS: Save this file in the same location as adplus.exe (usually C:\Program Files\Debugging Tools for Windows (x86))
COMMAND LINE:
"C:\Program Files\Debugging Tools for Windows (x86)\adplus.exe" -iis -c "C:\Program Files\Debugging Tools for Windows (x86)\adplus_w3wp.xml"
-->
<Settings>
<RunMode>Crash</RunMode>
<OutputDir>C:\Dumps</OutputDir>
<ProcessToMonitor>w3wp.exe</ProcessToMonitor>
</Settings>
<Exceptions>
<All>
<Actions1>VOID</Actions1>
<Actions2>VOID</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</All>
<Exception Code="av"><!-- Access Violoation -->
<Actions1>Log;Time;Stack;MiniDump;EventLog</Actions1>
<ReturnAction1>GN</ReturnAction1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="ch"><!-- InvalidHandle -->
<Actions1>Log;Time;Stack;MiniDump;EventLog</Actions1>
<ReturnAction1>GN</ReturnAction1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="ii"><!-- Illegal Instruction -->
<Actions1>Log;Time;Stack;MiniDump;EventLog</Actions1>
<ReturnAction1>GN</ReturnAction1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="dz"><!-- IntegerDivide -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="c000008e"><!-- FloatingDivide -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="iov"><!-- IntegerOverflow -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="lsq"><!-- InvalidLockSequence -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="sov"><!-- StackOverflow -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="aph"><!-- Application_hang -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="dm"><!-- Data_misaligned -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="gp"><!-- Guard_page_violation -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="ip"><!-- In_page_IO_error -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="isc"><!-- Invalid_system_call -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="sbo"><!-- StackOverflow -->
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="epr"><!-- Process_Shut_Down -->
<Actions1>Log;Time;</Actions1>
<ReturnAction1>Q</ReturnAction1>
</Exception>
<!--
<Exception Code="clr">
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="*">
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>
<Exception Code="clr">
<Actions1>VOID</Actions1>
<Actions2>Log;Time;Stack;MiniDump;EventLog</Actions2>
<ReturnAction1>GN</ReturnAction1>
<ReturnAction2>GN</ReturnAction2>
</Exception>-->
</Exceptions>
</ADPlus>
任何人都可以改进吗?我错过了任何重要的崩溃异常吗?
Can anyone improve on this? Have I missed any important crashing exceptions?
这篇关于如何使用ADPLUS _ONLY_获取MiniDumpOnSecond的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!