ADPlus 命令行开关

来源:互联网 发布:java有gc内存溢出 编辑:程序博客网 时间:2024/04/30 03:47

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

下面列出了最常用的开关。您还可以通过运行“ADPlus –help”,或通过阅读调试程序帮助文件 (Debugger.chm) 来查看完整的开关列表。

  • -hang
    此开关将 ADPlus 配置为在挂起模式下运行。您必须将此开关与“-iis”、“-pn”或“-p”开关一起使用。不能将“-hang”与“-crash”开关一起使用。

    注意:当 ADPlus 在挂起模式下运行时,您必须在进程停止响应或占用很高的 CPU 使用率之后启动 ADPlus。
  • -crash
    此开关将 ADPlus 配置为在崩溃模式下运行。您必须将此开关与“-iis”、“-pn”或“-p”开关一起使用。不能将“-crash”与“-hang”开关一起使用。

    注意:当 ADPlus 在崩溃模式下运行时,您必须在进程意外退出或者变得不稳定之前启动 ADPlus。
  • -pn process name
    “-pn”开关用于指定您希望 ADPlus 分析的进程名。要指定多个进程,请使用多个“-pn process name”开关。例如:
    -pn process1.exe -pn process2.exe
  • -p process ID
    “-p”开关用于指定您希望 ADPlus 分析的进程的 ID (PID)。要指定多个进程,请使用多个“-p PID”开关。例如:
    -p 1896 -p 1702
  • -iis
    “-iis”开关用于调试运行 Internet Information Server (IIS) 4.0 或更高版本的服务器计算机。在将 ADPlus 与“-iis”开关一起使用时,ADPlus 监视所有 IIS 进程内 (Inetinfo.exe) 和进程外 (Mtx.exe/Dllhost.exe) 应用程序。“-iis”开关可以与“-pn”开关或“-p”开关一起使用,也可以单独使用,以分析 IIS 和所有在崩溃模式或挂起模式下运行的 MTS/COM+ 应用程序。

    如果您尝试分析运行 IIS 3.0 或更低版本的服务器计算机,请使用“-pn”开关并将 Inetinfo.exe 指定为要监视的进程。
  • -notify computer nameuser name
    只有当 ADPlus 在崩溃模式下运行时此开关才有效。此开关指示 ADPlus 提醒指定的用户名或计算机名发生了崩溃。当调试程序由于第二次偶然发生的异常从进程分离时,或者当用户按 Ctrl+C 停止调试时,就会通过本地信使服务向远程用户或计算机发送通知。只有正在被调试的计算机上启动了本地信使服务时,才会发送此通知。
  • -quiet
    此开关指示 ADPlus 不显示所有模式对话框。如果您正在从远程命令外壳程序(其中模式对话框可能导致 ADPlus 无限期地等待用户单击“确定”)内运行 ADPlus,则此开关将非常有用。为保证获得最佳效果,请确保这是传递给 ADPlus.vbs 的第一个开关。
  • -o output directory
    此开关指示 ADPlus 在哪里放置调试输出文件。如果使用长文件名,则必须用双引号将它们括起来。此外,还可以使用 UNC 路径 (//server/share)。如果使用 UNC 路径,则 ADPlus 在紧跟您指定的 UNC 路径的下方创建一个新文件夹。根据正在运行 ADPlus 的服务器命名该文件夹(例如,//server/share/Web1 或 //server/share/Web2)。如果 ADPlus 在 Web 场中的多台计算机上(这些计算机全都将其输出放置于同一网络共享上)运行,则此开关十分有用。

 

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

在此情况下,进程可能会在一段持续时间内或无限地随机占用 100% 的 CPU。您应在挂起模式下运行 ADPlus,以获取发生问题占用 CPU 的进程的内存转储。例如,可使用以下命令语法之一:

ADPlus -hang -p 1896
此命令在挂起模式下运行 ADPlus,并生成 PID 为 1896 的进程的完全内存转储文件。

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

ADPlus -hang -iis -pn myapp.exe -o c:/temp
此命令在挂起模式下运行 ADPlus,并生成 IIS、Mtx.exe 或 Dllhost.exe 的所有实例及名为 Myapp.exe 的所有进程的完全内存转储文件。然后它将这些内存转储文件放在 C:/Temp 文件夹中。

如果在 CPU 被 100% 占用的情况下在挂起模式下运行 ADPlus,该工具将生成您在命令行中指定的进程的内存转储文件。

注意:在某些极少数情况下,调试程序可能无法在 100% 的 CPU 占用条件下或在发生挂起之后连接到进程。如果您在发生问题之后在挂起模式下运行 ADPlus,则该工具可能无法生成内存转储文件。在这些情况下,最好在出现问题之前连接到调试程序。为此,请使用下列命令语法之一在崩溃模式下运行 ADPlus:

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

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

ADPlus -crash -iis -pn myapp.exe -o c:/temp
此命令在崩溃模式下为名为 Myapp.exe 和 Inetinfo.exe 进程的所有实例及 Mtx.exe 或 Dllhost.exe 的所有实例运行 ADPlus。ADPlus 将等待异常发生或等待用户在一个或多个最小化的调试程序窗口中按 Ctrl+C,以生成内存转储文件并分离调试程序。接下来,ADPlus 将内存转储文件和日志文件放在 C:/Temp 文件夹中。

然后,在进程挂起或占用 100% CPU 使用率,用户可以在 ADPlus 生成的最小化的调试程序窗口中按 Ctrl+C,以便调试程序可以为进程生成内存转储文件。

注意:默认情况下,ADPlus 只有在用户按 Ctrl+C 时才生成小内存转储记录。此设置可节省磁盘空间。在这种情况下,配置 ADPlus 以在用户按 Ctrl+C 时生成完全内存转储文件可能是非常有用的。为此,请使用“–CTCF”开关。此外,为 CPU 使用率接近 100% 以及已达到 100% 的这一阶段捕获性能日志文件或系统监视器日志文件通常非常有帮助。至少,此日志文件应在 1 到 5 秒的间隔捕获以下对象:

  • 内存
  • 进程
  • 处理器
  • 系统
  • 线程

进程意外退出

在这种情况下,进程可能会随机意外退出(或崩溃)。您应在崩溃模式下运行 ADPlus,以便在发生问题获取退出的进程的内存转储文件。例如,可使用以下命令语法之一:

ADPlus -crash -iis
此命令在崩溃模式下运行 ADPlus,并使该工具将 CDB 调试程序连接到正在计算机上运行的 Inetinfo.exe 和所有 Mtx.exe 或 Dllhost.exe 进程。然后,ADPlus 将等待任何第一次偶然异常和第二次偶然异常发生。因为省略“-o”开关,所以默认情况下 ADPlus 将所有文件都放在安装文件夹的子文件夹中。

ADPlus -quiet -crash -iis -notify remote computer -o c:/temp
此命令在崩溃模式下以安静方式运行 ADPlus(不弹出任何对话框,并且将所有输出全部记录到事件日志中),并使该工具将 CDB 调试程序连接到正在计算机上运行的 Inetinfo.exe 和所有 Mtx.exe 或 Dllhost.exe 进程。因为使用了“-notify”开关,所以只要检测到崩溃或者所监视的进程退出,调试程序就会向登录到名为 remote computer 的计算机上的所有用户发出通知。因为使用了“-o”开关,所以 ADPlus 将所有输出都放在 C:/Temp 文件夹中。如果该文件夹不存在,ADPlus 会创建它。

ADPlus -crash -iis -o //server/share
此命令与前面的命令大致相同,只有一个例外,即它将所有输出都记录到网络服务器中。ADPlus 在 //server/share 中创建一个新子文件夹,并根据本地计算机命名该子文件夹。因此,如果您正在 Web 场中运行 ADPlus,则该场中正在运行 ADPlus 的每一个服务器都在 //server/share 下记录自己的唯一文件夹。(您不必为每一个服务器创建唯一文件夹。ADPlus 将自动执行此操作。)
有些需要进行自动化测试的时候,可以在开始里面添加下面这个批处理。
@echo off
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
Delay.vbs 1
"要监视的进程路径"
Delay.vbs 1
"C:/Program Files/Debugging Tools for Windows (x86)/adplus.vbs" -quiet -crash -pn 要监视的进程名
del Delay.vbs
echo ok!
pause
原创粉丝点击