如何使用 ADPlus.vbs 来解决"挂起"和"崩溃"

文章翻译 文章翻译
文章编号: 286350 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

ADPlus.vbs (ADPlus) 是一种工具从 Microsoft 产品支持服务 (PSS) 的任何进程或应用程序停止响应 (挂起) 或失败 (崩溃),可以解决问题。通常情况下,您可以使用 ADPlus 作为替换工具 Microsoft Internet 信息服务器 (IIS) 异常监视器 (6.1/7.1) 和用户模式进程转储。这些是两个单独的工具 PSS 经常用来找出什么使进程停止响应 (挂起) 或意外退出 (崩溃) 在 Microsoft Windows DNA 环境中。

更多信息

系统要求

ADPlus 具有以下最低要求:
  • Windows NT 4.0 Service Pack 4 或更高版本
  • Windows 脚本宿主版本 5.6 或更高版本
  • ADPlus 将放置输出文件的磁盘或网络共享上的可用空间至少 10 兆字节 (MB)
  • Microsoft Windows 调试工具安装

从何处获取 ADPlus?


ADPlus 将包括与最新 Microsoft Windows 调试工具。若要获取最新 Microsoft Windows 调试工具,请访问以下 Microsoft 网站:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

在 Windows SDK 安装向导的安装选项屏幕上的两个位置中列出的调试工具。如果您想要在其工作的计算机上安装 Windows 调试工具,则应选择对于 Windows 调试工具在下的选项常用实用程序.如果您想要在另一台计算机上设置 Windows 调试工具,则应选择调试工具在下的选项 可再发行组件程序包若要下载的调试工具安装软件包 (x86、 x64 Itanium) 的所有三个版本。

注意作为 Windows SDK 的一部分提供的最新版本的 Microsoft Windows 调试工具。此外,文件名称已从 ADPlus.vbs 到 ADPlus_Old.vbs。此外,还添加了 ADplus.exe。因此,当您键入只执行 ADplus.exeadplus.ADplus.exe 不是与 ADPlus_Old.vbs 相同。这篇文章中提到了只有.vbs 版本。当您想要执行.vbs 版本时,您必须键入ADPlus_old.vbs.


ADPlus 版本 6.0 的新功能

ADPlus V6.0 已完全重新编写。该工具有新的交换机和新的功能。现在,您可以通过外部配置文件配置工具。可以在 Microsoft Windows 调试器软件包中包含的调试程序帮助文件 (Debugger.chm) 中查看有关新功能和交换机的更新的信息。

Debugger.chm 位于与 ADPlus.vbs 相同的文件夹中。若要找到 ADPlus 的文档,请单击 内容 选项卡上,然后再单击以下各项:
  • 使用 Windows 调试工具
  • 故障转储文件
  • 用户模式转储文件
  • 创建用户模式转储文件
  • ADPlus
您还可以通过单击来找到 ADPlus 的文档 索引 选项卡类型 ADPlus 在关键字文本框中。

ADPlus 的作用是什么?

ADPlus 是基于控制台的 Microsoft Visual Basic 脚本。它自动化了 Microsoft cdb 调试程序以生成内存转储和日志文件,其中包含一个或多个进程的调试输出。每次运行 ADPlus,调试信息 (内存转储和包含调试信息的文本文件) 放入一个新的唯一命名文件夹 (如 C:\Temp\Crash_Mode__Date_01-22-2001__Time_09-41-08AM) 在本地文件系统上或远程网络共享上。此外,创建每个文件有一个唯一名称 (如 PID-1708__Inetinfo.exe__Date_01-22-2001__Time_09-41-08AM.log),以避免覆盖较旧的文件与较新的。

ADPlus 适用于任何用户模式进程或服务 (如 Internet Information Services (IIS)、 Microsoft 事务服务器 (MTS) 或 Microsoft COM + 应用程序。

下面是一些 ADPlus 的功能:
  • ADPlus 使用最新的 Microsoft 调试改进的功能、 速度和可靠性。
  • 当 ADPlus 为多个进程的内存转储时,异步进行,以便每个进程被冻结和转储在相同的时间。此方法可以提供整个应用程序在运行 ADPlus 时的有效"快照"。您必须捕获构成应用程序的所有进程和应用程序使用一次,以捕获时出现问题的应用程序的状态的所有进程。这是用于进行远程过程调用其他进程的应用程序尤其重要。
  • ADPlus 具有命令行界面。因为 ADPlus 没有图形用户界面,您可以运行它在安静模式下 (不显示对话框) 中从远程命令外壳程序 (命令行解释器通过使用 Remote.exe 远程输出的)。在安静模式下,错误显示在控制台中并被写入事件日志。有关如何运行 ADPlus,从远程命令外壳程序的详细信息,请参阅本文的"使用情况"部分。
  • 如果您使用-通知开关时,ADPlus 监视崩溃,并启动 Windows Messenger 服务时,ADPlus 可以提醒用户或计算机通过 Windows Messenger 服务发生崩溃。
  • 当 ADPlus 监视的进程在崩溃模式下,如果发生了崩溃时,ADPlus 会将崩溃类型有关的重要信息发送到事件日志。
  • ADPlus 支持 XCOPY 部署。如果安装随 ADPlus 一起提供的测试计算机的调试程序包,则可以复制到另一台计算机已安装调试程序的文件夹。此外,ADPlus 不要求您注册的系统上的任何自定义组件对象模型 (COM) 组件。由于这个原因,您可以锁定软件配置的生产服务器上使用 ADPlus。若要删除 ADPlus,删除已安装或复制到其中的文件夹。

何时应使用 ADPlus?

ADPlus 旨在提供 Microsoft PSS 支持专业人员提供他们必须找出复杂的环境中发生的问题的原因的调试信息。

使用 ADPlus 捕获调试信息,如果您遇到以下问题:
  • 如果进程停止响应。
  • 进程占用 100%的 CPU,在单处理器计算机上,双处理器计算机上,25%的 CPU,四核处理器计算机上,50%的 CPU,依此类推。
  • 进程崩溃或意外关闭。

何时您不应使用 ADPlus?

请勿在下列情况下使用 ADPlus:
  • 如果您必须解决程序或进程的启动过程中意外退出。ADPlus只能用于能成功启动的进程。要解决在启动过程中意外退出的进程,用户模式进程转储可能是更好的解决方案。 有关用户模式进程转储的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    253066OEM 支持工具阶段 3 服务版本 2 的可用性
    或者,您可以使用最新的调试程序手动调试进程。有关最新的调试程序的详细信息,请访问以下 Microsoft 网站:
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx
  • 如果您使用 ADPlus 在崩溃模式下时对性能产生明显的影响。通常情况下,这由动态链接库 (Dll) 或程序该引发许多 Microsoft Visual C++ EH 异常。(这些异常出现在使用 c + + throw语句时,或当您使用try/catch块。大量信息写入调试输出流的程序也可能导致性能下降。在绝大多数情况下,ADPlus 不会影响性能明显地体现在崩溃模式下运行时。
  • 如果您正在运行在群集环境中使用 ADPlus 时,应采取一些预防措施。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    841673在群集中的服务器可能进行故障切换时尝试创建转储文件使用 ADPlus 或用户转储在 Exchange 2000 信息存储的服务器或 Exchange Server 2003

ADPlus 是如何工作的?

ADPlus 有两种操作模式:
  • "挂起"模式用于解决进程挂起、 100 %cpu 使用率以及不涉及崩溃的其他问题。当您在挂起模式下使用 ADPlus 时,您必须等待,直到该进程或进程停止响应之前运行的脚本 (与崩溃模式不同,挂起模式下不持久)。
  • "崩溃"模式用于解决系统崩溃,导致 Dr.Watson 错误或任何其他类型的错误,导致程序或服务意外退出。当您使用 ADPlus 在崩溃模式下时,您必须启动 ADPlus之前发生崩溃。您可以配置 ADPlus,以通知管理员或计算机发生崩溃,通过-通知切换。

挂起模式

在此模式下,ADPlus 立即生成完全内存转储脚本已完成后为在命令行指定的所有进程。创建每个.dmp 文件放入包含运行 ADPlus 时的日期/时间戳的文件夹中。运行 ADPlus 时,每个文件名包含进程名称、 进程 ID,以及日期/时间戳。进程内存正被转储到一个文件,而该进程将被冻结。在创建内存转储文件后,通过将非侵入的附加/分离与 CDB 调试程序一起使用来恢复进程。

使用提示您可以使用 ADPlus 在挂起模式下,而不是 Userdump.exe 转储的一个或多个进程的内存。此外,挂起模式在终端服务器会话内的工作原理。

崩溃模式下

在此模式下,ADPlus 将 cdb 调试程序附加到命令行上指定的所有进程。ADPlus 将自动配置调试程序,以监视以下类型的异常:
  • 无效的句柄
  • 非法指令
  • 整数被零除
  • 浮点被零除
  • 整数溢出
  • 无效的锁定顺序
  • 访问冲突
  • 堆栈溢出
  • C + + EH 异常
  • 未知的异常
在解决这些类型的异常时,您可以使用 ADPlus 在崩溃模式下,而不是 IIS 异常监视器或 Userdump.exe。因为崩溃模式下使用"侵害性"将通过 cdb 调试程序附加,它不起作用在 Microsoft Windows NT 4.0 或 Windows 2000 终端服务器会话内。仅挂起模式的工作原理,在这些操作系统上的终端服务器会话内,因为它们需要使用非侵入附加。有关如何 invasively 和非侵入与最新的调试器附加到进程,请参阅"使用 Windows 调试工具: 附加到正在运行的进程 (用户模式)"调试器帮助中的部分。

注意崩溃模式下才可以在 Windows XP 和 Microsoft Windows Server 2003 操作系统上的终端服务器会话中。

当 ADPlus 在崩溃模式下运行时,调试程序,保持连接到每个命令行上为指定进程的生存期直到捕获到致命异常和进程意外退出或在用户按下 CTRL + C 组合键以将调试程序与该进程分离的进程。若要手动将调试器与进程分离,必须最大化调试程序窗口中,然后按 CTRL + C 来中断至调试器。

当您按 CTRL + C 时,ADPlus 捕获此命令、 开始到日志文件,所有线程的堆栈列出,然后在它与调试程序分离前生成过程的小内存转储记录。因为崩溃模式执行侵害性连接,所以在分离调试程序时该进程已停止。您必须重新启动该进程。如果它是 MTS 或 COM + 进程,该进程是自动重新启动下次调用该程序包中的组件。

第一次机会异常

每种类型的异常 (如访问冲突或堆栈溢出) 可以对调试程序作为第一次机会异常或第二次机会异常引发。根据定义,第一次机会异常是非致命异常,除非它未正确处理使用错误处理程序。如果出现此问题,作为 (只有调试程序可以处理这些) 的第二次机会异常再次引发异常。如果没有任何调试程序处理第二次机会异常,应用程序将退出。

有关详细信息有关的第一个和第二个机会异常和 Windows NT SEH (结构化的异常处理),请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
105675第一和第二次机会异常处理
默认情况下 ADPlus 检测到第一次为所有类型的异常未知的机会 (非致命) 异常和 EH 异常时它将采取以下措施:
  1. 暂停该进程,要记录的日期和时间在被监视的进程的日志文件中发生异常。
  2. 日志中记录被监视的进程的日志文件引发异常的线程的线程 ID 和调用堆栈。
  3. 生成唯一命名的小内存转储记录 (.dump-u /m) 发生异常,次生成的过程,然后恢复该进程。
注意默认条件下,ADPlus 不生成唯一小内存转储记录的第一次机会 EH 和未知的异常因为这些异常会频繁地发生。通常情况下,此类异常处理的错误处理代码在进程或 DLL 中。这些都是处理的异常,因为它们不会成为第二次机会 (未处理的) 异常并不会结束进程。

但是,您可以配置 ADPlus,以生成唯一小内存转储为第一次机会 EH 和未知的异常。若要执行此操作,必须使用配置文件以自定义 ADPlus。

第二次机会异常

当 ADPlus 检测到第二次机会 (致命) 异常为所有类型的异常 (包括 EH 和未知的异常) 时,它将采取以下操作:
  1. 暂停该进程,要记录的日期和时间在被监视的进程的日志文件中发生异常。
  2. 日志中记录被监视的进程的日志文件引发异常的线程的线程 ID 和调用堆栈。
  3. 在发生致命异常时生成进程的完全内存转储,然后退出调试程序。此操作将销毁该进程。
注意Microsoft PSS 支持专业人员,要分析内存转储,他们可能需要获取任何自定义组件或 Dll 和其对应的符号文件的副本。有关如何为 Dll 创建符号文件的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
121366PDB 和 DBG 文件-什么是以及它们如何工作
291585 如何创建用于 Visual C++ 的应用程序的调试符号
有关如何获取有关 Microsoft 产品 (需要使用调试程序在分析内存转储) 的符号的详细信息,请访问以下 Microsoft 网站:
http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx

ADPlus 命令行开关

若要使用 ADPlus,您必须指定一系列命令行开关或参数的脚本。ADPlus,至少需要两台交换机: 指定操作的模式和指定要对执行操作的目标进程。

以下是最常用的开关。此外可以通过运行ADPlus –help,查看交换机的完整列表,或通过查看调试程序帮助文件 (Debugger.chm)。
  • -挂起
    此开关配置 ADPlus,以在挂起模式下运行。必须使用此开关与-pn-p-iis开关。不能使用-挂起-崩溃切换。

    注意当在挂起模式下运行 ADPlus 时,您必须启动 ADPlus进程停止响应,或正在使用的 cpu 百分比高。
  • -崩溃
    此开关配置 ADPlus 在崩溃模式下运行。必须使用此开关与-pn-p-iis开关。不能使用-崩溃-挂起切换。

    注意当 ADPlus 在崩溃模式下运行时,您必须启动 ADPlus之前在进程退出 unexpectedlys 或变得不稳定。
  • -pn 进程名称
    -Pn开关用于指定所需 ADPlus,以分析的进程名。若要指定多个进程,请使用多个 -pn 进程名称 切换。例如:
    -pn process1.exe-pn process2.exe
  • -p 进程 ID
    -P开关用于指定的进程 ID (PID) 的所需 ADPlus,以分析的进程。若要指定多个进程,请使用多个 -p PID 切换。例如:
    -p 1896 p 1702
  • -sc生成命令
    -pn-p开关,哪些指定进程已在运行附加到调试器的不同-sc交换机在调试器中定义的应用程序和参数来启动 (或生成)。例如:
    -sc"c:\windows\system32\notepad.exe
  • -iis
    -Iis开关用于调试运行 Internet 信息服务器 (IIS) 4.0 版或更高版本的服务器计算机。与iis开关一起使用 ADPlus,ADPlus 将监视所有的 IIS 进程内 (Inetinfo.exe) 和进程外 (Mtx.exe/Dllhost.exe) 应用程序。您可以将iis开关一起使用-pn开关或-p开关,也可以使用它单独以分析 IIS 和所有正在运行的 MTS / COM + 应用程序中任何一种崩溃模式或挂起模式。

    如果您正在尝试分析服务器计算机运行 IIS 3.0 或更早版本,使用-pn开关,并指定要监视的进程 Inetinfo.exe。
  • -通知 计算机名用户名称
    当 ADPlus 在崩溃模式下运行时,此开关才有效。此开关指示 ADPlus 以提醒指定的用户名或计算机名称发生了崩溃。当调试器与进程分离由于第二次机会异常,或当用户按下 CTRL + C 停止调试,是为远程用户或计算机通过本地信使服务发送通知。正在调试的计算机上启动本地信使服务时才会出现此通知。
  • -安静
    此开关指示 ADPlus,以取消所有模式对话框。此开关将非常有用,如果您正在运行 ADPlus 从远程命令外壳程序模式对话框可能会导致 ADPlus 无限期地等待用户单击确定。为了获得最佳结果,确保这是传递给 ADPlus.vbs 的第一个交换机。
  • -o 输出目录
    此开关指示 ADPlus 放置调试输出文件的位置。如果您使用长文件名,您必须将它们放在双引号内。此外,您可以使用 UNC 路径 (?服务器\共享).如果使用 UNC 路径时,ADPlus 将创建一个新的文件夹,您指定的 UNC 路径的紧下方。该文件夹命名为服务器正在运行 ADPlus (例如,?服务器\共享\Web1 或?服务器\共享\Web2)。如果 ADPlus 在 web 场中所有将其输出放置于同一网络共享的多台计算机上运行,便可以使用此开关。

第一次运行 ADPlus

默认情况下调试程序安装到 C:\Program Files\Debugging 工具的 Windows 文件夹中。要更改安装文件夹,请执行自定义安装时您安装调试程序,并指定不同的文件夹。或者,如果执行典型安装,将 Files\Debugging 工具程序的 Windows 文件夹的内容复制到到另一个文件夹。

若要运行 ADPlus,打开命令外壳程序,切换到调试程序已安装或复制,其中的文件夹,然后键入 ADPlus.vbs.

您可能会提示您从 Wscript.exe cscript.exe 更改默认的脚本解释程序。Microsoft 强烈建议您允许 ADPlus,以将 CSCript 配置为默认脚本解释程序。

语法

ADPlus 使用以下语法:ADPlus.vbs 操作模式 流程监视可选交换机在何处 操作模式-挂起,或-崩溃
在何处 若要监视的进程-iis-pn 进程.exe-p PID
在何处 可选交换机-通知-o,或-安静

准备服务器以用于崩溃模式调试

在崩溃模式下运行 ADPlus 之前,必须准备服务器以获得最多信息中 ADPlus 崩溃模式下调试会话。

准备基于 Windows 2000 的服务器以用于在崩溃模式下调试的步骤

  1. 到您的服务器上的 C:\WINNT\Symbols 文件夹中安装 Windows 2000 SP1 或 SP2 的符号。您可以从下面的 Microsoft 网站下载符号:
    Windows 2000 SP1
    http://download.microsoft.com/download/win2000platform/SP/SP1/NT5/EN-US/SP1SYM.exe

    Windows 2000 SP2
    http://download.microsoft.com/download/win2000platform/SP/SP2/NT5/EN-US/SP2SYM.exe

    下载 Sp1sym.exe 或 Sp2sym.exe 后,从指定的文件夹运行该文件。
  2. 当系统提示您时,提取到新的临时文件夹例如,C:\Sp1sym 或 C:\Sp2sym,或到某个驱动器或文件夹具有足够的磁盘空间的文件。
  3. 运行 C:\Sp1sym\Support\Debug\Symbols\i386\Symbols_spexe 或 C:\Sp2sym\Support\Debug\Symbols\i386\Symbols_spexe (其中 C:\Sp1sym 或 C:\Sp2sym 是您从中提取上一步中的文件的文件夹)。
  4. 当您收到的提示最终用户许可协议时,单击
  5. 当系统提示您,您可以在其中解压缩文件的文件夹时,单击 C:\WINNT\Symbols然后单击 确定.请注意,将出现一个新的 C:\WINNT\Symbols 文件夹。此文件夹包含具有名称 (如 DLL 和 EXE 的各个子文件夹。
  6. 您的自定义 Dll 和开机自检 SP1 和 SP2 修补程序的符号复制到 C:\WINNT\Symbols\Dll 文件夹中。
  7. 将您的自定义.exe 文件的符号复制到 C:\WINNT\Symbols\Exe 文件夹中。此外,必须从您的开发人员,获取任何.pdb 或.dbg 文件,然后将这些文件放在 C:\WINNT\Symbols\Dll 文件夹中。
  8. 覆盖从修补程序版本的 C:\WINNT\Symbols\Dll 文件夹中已存在的任何.dbg 或.pdb 文件。

    注意可以使用最新版本的 Winzip 打开修补程序包。您可以从 \Debug 子文件夹中提取这些符号。每个修复程序自安装程序中包含 \Debug 子文件夹。
  9. 创建一个 _NT_SYMBOL_PATH 的环境变量,并将其设置为 C:\WINNT\Symbols.此变量可以是系统变量或用户环境变量。

准备基于 Windows NT 4.0 的服务器以用于在崩溃模式下调试的步骤

  1. 假设您正在运行 Windows NT 4.0 Service Pack 6a。Windows NT 4.0 SP6a 符号安装到您的服务器上的 C:\WINNT\Symbols 文件夹中。
    Windows NT 4.0 Service Pack 6/6a 有关的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    241211Windows NT 4.0 Service Pack 6/6a (第 1 部分) 中修复的 bug 的列表
    下载 Sp6symi.exe 后,请指定文件夹中运行它。
  2. 当系统提示您将文件解压缩到 C:\WINNT 文件夹 (或替代相应的 \WINNT 文件夹,如果符号未安装到 C:\WINNT)。请注意,将出现一个新的 C:\WINNT\Symbols 文件夹包含有不同的子文件夹名为 DLL、 exe 文件,和其他人。
  3. 将子文件夹从 C:\WINNT\Symbols\IIS4 文件夹复制到 C:\WINNT\Symbols。当提示您覆盖所有文件时,请单击 .
  4. 您的自定义的符号复制 Dll 和任何 C:\WINNT\Symbols\Dll 文件夹中发布 SP6a 修补程序。
  5. 将您的自定义.exe 文件的符号复制到 C:\WINNT\Symbols\Exe 文件夹中。此外,必须从您的开发人员,获取任何.pdb 或.dbg 文件,然后将这些文件放在 C:\WINNT\Symbols\Dll 文件夹中。
  6. 覆盖任何.dbg 或.pdb 文件来自修补程序版本的 C:\WINNT\Symbols\Dll 文件夹中已存在的。

    注意可以使用最新版本的 Winzip 打开修补程序包。您可以从 \Debug 子文件夹中提取这些符号。每个修复程序自安装程序中包含此子文件夹。
  7. 创建一个 _NT_SYMBOL_PATH 的环境变量,并将其设置为 C:\WINNT\Symbols.此变量可以是系统变量或用户环境变量。
虽然不需要下载并安装您正在调试的服务器上的符号,强烈建议。下载并安装在服务器上的符号时,日志文件会捕获输出时向 Microsoft PSS 更加有用。

有关如何获得 Microsoft 调试符号的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
268343Umdhtools.exe: 如何使用 Umdh.exe 来查找内存泄漏
配置您的服务器后,您可以在崩溃模式下运行 ADPlus。这种模式是"常见 ADPlus 使用情况"一节中所述。


常见 ADPlus 使用情况

本部分介绍了一些典型的方案可能需要运行 ADPlus。

进程停止响应或占用 100%的 CPU 使用率

在这种情况下,进程可能随机占用 100%的 CPU 段持续时间内或无限期。在获得或多个 CPU 占用出现问题的进程的内存转储的挂起模式下运行 ADPlus。例如,使用以下命令语法之一:
ADPlus-挂起-p 为 1896年
此命令在挂起模式下运行 ADPlus,并生成 PID 为 1896年的进程的完全内存转储文件。

ADPlus-挂起-pn myapp.exe
此命令在挂起模式下运行 ADPlus,并生成名为 Myapp.exe 的所有进程的完全内存转储文件。

ADPlus-挂起-iis-pn myapp.exe-o c:\temp
此命令在挂起模式下运行 ADPlus,并生成完全内存转储文件的 IIS 中,所有实例的 Mtx.exe 或 Dllhost.exe,所有进程,并被命名为 Myapp.exe。然后,它将这些内存转储文件放在 C:\Temp 文件夹中。
100 %Cpu 占用条件的过程中在挂起模式下运行 ADPlus,该工具将生成内存转储文件或多个命令行指定的进程。

注意在某些罕见情况下,调试器可能无法以 100 %cpu 占用条件后附加到进程,或发生挂起。如果发生此问题后,您可以在挂起模式下运行 ADPlus,该工具可能不生成内存转储文件。在这些情况下,可能最好在调试器连接之前发生问题。若要这样做,请使用以下命令语法之一在崩溃模式下运行 ADPlus:
ADPlus 的崩溃-p 为 1896年
此命令将运行 ADPlus 在崩溃模式下为 PID 为 1896年的进程。ADPlus 将等待异常发生,或用户按下 CTRL + C 在最小化调试程序窗口中,以生成内存转储文件并分离调试程序。

ADPlus--pn myapp.exe 的崩溃
此命令将运行 ADPlus 在崩溃模式下为名为 Myapp.exe 的进程。ADPlus 将等待异常发生,或用户按下 CTRL + C 在最小化调试程序窗口中,以生成内存转储文件并分离调试程序。

ADPlus 的崩溃-iis-pn myapp.exe-o c:\temp
此命令将运行 ADPlus 在崩溃模式下名为 Myapp.exe 和 Inetinfo.exe,进程的所有实例和 Mtx.exe 或 Dllhost.exe 的所有实例。ADPlus 将等待异常发生,或用户在一个或多个最小化调试程序窗口,以生成内存转储文件 (或文件) 并分离调试程序中按 CTRL + C (或调试器)。ADPlus 将内存转储文件和日志文件放在 C:\Temp 文件夹中。
然后,该进程挂起或占用 100%的 CPU 使用率,用户可以按 CTRL + C 最小化调试程序窗口 (或 windows) 中 ADPlus 生成,以便调试器可以生成内存转储文件 (或多个进程) 的。

注意默认情况下 ADPlus 只生成小内存转储记录当用户按下 CTRL + C。此设置可以节省磁盘空间。在这种情况下,可能需要配置 ADPlus,以生成完全内存转储文件,当用户按下 CTRL + C。若要执行此操作,请使用–CTCF开关。此外,它是捕获性能日志文件或系统监视器日志文件最多的时间段,并包括 100 %cpu 占用率通常也非常有用。至少,此日志文件应在 1 到 5 秒的间隔捕获以下对象:
  • 内存
  • 进程
  • 处理器
  • 系统
  • 线程

进程意外退出

在这种情况下,进程可能随机退出 (或崩溃) 意外。运行 ADPlus 在崩溃模式下,若要获取进程或退出之前发生此问题的进程的内存转储文件中。例如,使用以下命令语法之一:
ADPlus-导致 iis 崩溃
此命令在崩溃模式下运行 ADPlus,并使其将 cdb 调试程序附加到 Inetinfo.exe 和计算机运行的所有 Mtx.exe 或 Dllhost.exe 进程。然后,ADPlus 将等待任何第一次机会和第二次机会异常发生。默认情况下,ADPlus 将所有文件的安装文件夹的子文件夹中因为省略-o开关。

ADPlus-安静-导致 iis 崩溃的通知 远程计算机 -o c:\temp
此命令运行 ADPlus 安静模式 (无对话框中,所有输出都记录到事件都日志) 在崩溃模式,它将 cdb 调试程序附加到 Inetinfo.exe 和所有 Mtx.exe 或 Dllhost.exe 处理的原因是在计算机上运行。因为-通知开关,调试程序通知所有用户登录到计算机名为 远程计算机 每当检测到崩溃或退出该进程时,被监视。因为使用-o开关,则 ADPlus 会将所有输出都放 C:\Temp 文件夹中。如果该文件夹不存在,则 ADPlus 将创建它。

ADPlus 的崩溃-iis o?服务器\共享
此命令是与前一个命令相同,不同之处在于它将所有输出都记录到网络服务器。创建新的子文件夹中?服务器\共享和本地计算机命名该子文件夹。因此,如果您在 web 场中运行 ADPlus,运行 ADPlus 的服务器场中每台服务器记录在其自己唯一的文件夹?服务器\共享.(您不必创建每个服务器的唯一文件夹。ADPlus 就自动。
注意如果您运行 ADPlus 在崩溃模式下从本地控制台 (而不是从远程命令外壳程序下一节中所述),则必须保持登录到该控制台的调试会话的持续时间。

例如,假设您在崩溃模式下启动 ADPlus,并使用-iis开关监视 IIS。当您从控制台注销时,请退出控制台 (和所有其他正在运行的应用程序) 上运行的 Cdb.exe 的副本。因此,调试停止,并且正在监视的进程结束。

若要避免此问题,您可以锁定控制台会话 (按 CTRL + ALT + DEL 键的组合,然后单击 锁定计算机) 或已计划以非交互方式运行的远程命令外壳程序内运行 ADPlus (即,它不要求交互登录)。

有关如何计划远程命令外壳程序以非交互方式运行的详细信息,请参阅"典型 ADPlus 使用情况的方案: 运行中崩溃模式远程"一节。

MTS 或 COM + 服务器应用程序意外退出

MTS 或 COM + 服务器应用程序实际运行中的代理项进程 (Mtx.exe 或 Dllhost.exe) 中运行的自定义组件对象模型 (COM) 组件。这些代理项进程具有属性和设置,可以通过 MTS 资源管理器中 (对于 Windows NT 4.0) 或 (对于 Windows 2000、 Windows XP 和 Windows Server 2003) 组件服务 Microsoft 管理控制台 (MMC) 管理单元进行配置。

默认情况下 MTS 或 COM + 服务器应用程序配置为三分钟的空闲时间后退出。若要确保这些进程保持运行调试程序已连接并且正监视异常,您必须将它们配置为 空闲时保持运行.

此外,MTS 和 COM + 实现报警。报警是一种安全措施,旨在失败 (或退出) MTS / COM + 进程生成的未处理的访问冲突。

默认情况下会引发未处理的访问冲突异常的 MTS 或 COM + 应用程序中启用了报警。因此,故障 MTS / COM + 服务器应用程序无法引发第二次机会访问冲突异常 (即,它退出后第一次机会访问冲突)。默认条件下,ADPlus 被配置为生成只小内存转储记录第一次机会异常发生时。

若要成功调试 MTS / COM + 服务器应用程序,请按照下列步骤:
  1. 配置 MTS / COM + 服务器应用程序到 空闲时保持运行.
  2. 使用FullOnFirst开关创建上第一次机会异常的完全转储文件。
  3. 在崩溃模式下运行 ADPlus,然后等待应用程序失败。
注意因为 MTS 和 COM + 关闭服务器的应用程序,并且故障快速报警策略可以防止进程引发第二次机会异常,可能只能获取第一次机会访问冲突内存转储文件。

在崩溃模式下从远程运行

有许多情况下,当您必须启动 ADPlus 在崩溃模式下从本地客户端计算机,以监视在服务器场中的一个或多个远程服务器意外退出的进程。通常情况下,在 Windows 2000 中,您执行此操作通过 Windows 终端服务。但是,不能在 Windows NT 4.0 和 Windows 2000 上的不同窗口站内正运行的应用程序进行调试。因此,ADPlus 禁用崩溃模式功能,当它检测到它正在终端服务会话中。要解决此问题,请通过使用 Remote.exe 实用工具共享远程服务器,创建一个批处理文件在远程服务器上,启动命令外壳程序,然后计划要使用AT命令在目标服务器上运行该批处理文件。( AT命令使命令外壳程序以非交互方式运行与服务类似。远程命令外壳程序然后相连的本地工作站或使用同一 Remote.exe 实用工具,用于启动命令外壳程序的客户端计算机。

若要使用AT命令在服务器上启动远程命令外壳程序,请按照下列步骤操作:
  • 在远程服务器上
    假设调试程序安装到 C:\Debuggers。请按照下列步骤操作:
    1. 在 C:\Debuggers 文件夹中,创建一个名为的新的批处理文件 Remoteshell.cmd.
    2. 将以下行添加到此批文件:
      c:\debuggers\remote.exe /s"cmd.exe"remoteshell
    3. 在控制台的服务器上,或在终端服务会话中,打开新的命令外壳程序,然后键入以下命令:
      在 15: 00 c:\debuggers\remoteshell.cmd
      其中15: 00是当前时间晚一分钟。例如,如果当前时间是 14: 59,键入 15: 00.
    4. 等待要运行的命令。
    5. 在命令提示符处,键入 AT 不带参数以验证该任务是否运行,无任何错误。
  • 将本地客户端
    安装调试程序在本地客户端计算机上或 (至少) 复制本地 Remote.exe 实用程序。(默认情况下该实用程序被安装使用调试程序的根安装文件夹中。

    假定调试器和 Remote.exe 实用程序安装到 C:\Debuggers。请按照下列步骤操作:
    1. 在命令提示符下,切换到 C:\Debuggers 文件夹。
    2. 键入以下命令:
      remote.exe /c 远程服务器 remoteshell
      在何处 远程服务器 是远程服务器的名称。
    3. 您的本地命令外壳程序现在连接到的远程命令外壳程序正在运行的服务器上,并且您在本地键入的所有命令将在远程服务器 (都执行 DIR c:\ 命令可以列出驱动器 C 上的远程服务器的内容)。
    4. 在远程命令外壳程序中,您现在可以在崩溃模式下运行 ADPlus,就像从控制台本地运行它一样。但是,您必须使用-安静开关抑制 ADPlus 在默认情况下生成的所有对话框。如果不使用-安静交换机,远程命令外壳程序将停止响应后运行 ADPlus,并不会返回到一条提示。如果出现此问题,必须退出服务器上的远程命令外壳程序 (Cmd.exe),然后启动新实例。
    5. 若要发送到 ADPlus 当前正在崩溃模式下通过远程调试的进程调试中断 (CTRL + C),必须使用 Breakin.exe 实用程序。默认情况下使用调试程序调试程序文件夹的根目录中安装了 Breakin.exe。例如,若要停止调试 1975年的进程 ID 与正在运行的 IIS (Inetinfo.exe),请在远程命令外壳程序中键入以下命令:
      1975 breakin.exe
      或者,您可以使用 Kill.exe 命令 (位于根调试程序文件夹中) 退出任何正在调试的进程。

其他信息和已知的问题

  • 您如何确定 ADPlus 是否已捕获与崩溃有关的信息,或者在崩溃模式下正被监视的进程已退出?

    有几种方法来确定这一点:
    • 使用-通知开关,并且确保正在调试的服务器上,并将接收通知的客户端计算机上启动信使服务。
    • 在文本编辑器中,打开.log 文件出现在每个进程的输出文件夹中的,然后向下滚动到文件的结尾。找到以下文本:
           0:070> * -------- AutodumpPlus 4.01 finished running at: --------
           0:070> .time
           Debug session time: Mon Aug 06 15:25:15 2001
           System Uptime: 3 days 17:00:34 
           Process Uptime: 1 days 3:10:38 
           0:070> * -------------------------------------------------------
    • 在输出文件夹中,找到包含短语"__2nd_chance"的任何.dmp 文件。如果此短语出现在内存转储记录的标记中,一个进程已意外退出。
    • 在输出文件夹中,找到包含短语"__Process_was_shutdown"的任何.dmp 文件。如果此短语出现在内存转储记录的标记中,则管理员退出该进程 ; 如果它是 MTS / COM + 应用程序,该进程退出,因为它已经达到空闲的限制。
    • 在输出文件夹中,找到包含短语"__CTRL-C"任何.dmp 文件。如果此短语出现在内存转储记录的标记中,从一个 DLL,它某人或过程中按下的 CTRL + C 组合键从控制台运行 (或远程运行 ADPlus,则使用 Breakin.exe) 引发了调试中断异常停止当前的调试会话。
  • 您必须在 ADPlus,以运行的系统上安装 Windows 脚本宿主组件。若要下载 Windows 脚本宿主,请访问以下 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/ms950396.aspx
    注意如果您有下面的 Microsoft 产品安装的任何可能已安装 Windows 脚本宿主组件:
    • Microsoft Internet Explorer 5
    • Microsoft Office 2000
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual Studio 6.0
    • Microsoft Windows NT 选项包
    • Microsoft Windows 2000
    • Microsoft XP Windows
    • Microsoft Windows Server 2003
    • Microsoft Windows Vista
  • -Iis开关只有 Internet 信息服务器 (IIS) 4.0 或 Internet Information Services (IIS) 5.0。x 已安装。
  • 在安静模式下运行 ADPlus,该工具将记录到事件日志的信息。
  • 如果您使用-o开关,指定的路径必须包含多个不存在的文件夹。例如:
    1. 您指定 -o c:\temp1\temp2.但是,C:\Temp1 和 \Temp2 文件夹不存在。
    2. 中 ADPlus,指示不存在的文件夹,并 ADPlus 将不创建它们,您收到一条错误消息。
    如果只指定 -o c:\temp1,ADPlus 创建 C:\Temp1 文件夹 (如果不存在,然后将所有输出文件都放在该文件夹中。如果您想要指定多个子文件夹,并使用-o开关,请验证所有子文件夹存在,才能运行 ADPlus。
  • 在 COM + 中,您可以配置服务器程序包,使文件包的属性对话框中的高级选项卡上的调试器中启动。如果您启用了在调试器中启动选项,ADPlus 无法将 cdb 调试程序附加到进程。默认情况下只有一个调试器可以附加到进程一次。
  • 当从 ADPlus 正在分析在崩溃模式下已退出 (故意或意外),它分析的进程创建日志文件的另一个进程的进程进行远程过程调用 (RPC) 可能包含一个或多个以下异常:
    未知的异常的代码 80010105 (第一次机会)
    未知的异常的代码 800706be (第一次机会)
    未知的异常的代码 800706ba (第一次机会)
    这些例外情况是典型的。从到不存在或已失败的进程正在监视的进程进行调用时,RPC 引发这些异常。

    此外,如果在该过程中 ADPlus 调试日志中 ADPlus 监视 Inetinfo.exe,在日志中可能会出现以下异常:
    未知的异常的代码 800706bf (第一次机会)
    此异常通常在 IIS 对已失败的进程外 (高隔离级别) 网站的调用后出现。它可能会跟以下异常的两个实例:
    未知的异常的代码 800706ba (第一次机会)

参考

有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
323478您不能通过终端服务器会话调试

属性

文章编号: 286350 - 最后修改: 2012年9月30日 - 修订: 4.0
这篇文章中的信息适用于:
  • Microsoft Internet Information Services 6.0
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Windows 2000 Standard Edition
  • Microsoft Windows XP Service Pack 2
  • Microsoft Windows Server 2003 Enterprise Edition
  • Windows Vista Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
关键字:?
kbbug kbdebug kbhowto kbmt KB286350 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 286350
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com