0

我正在压力测试中测试应用程序。
这就是为什么如果发生错误(打开错误窗口)或者它挂起或崩溃,我需要重新启动它。同时,我需要收集有关导致重新启动的问题的所有有用信息:制作转储文件并从错误窗口复制错误文本(和/或截取其屏幕截图)。

使用 bash 很简单:在 OSX 崩溃时自动重新启动程序(没有屏幕截图或转储,但错误窗口保留在 MacOS 上,因此实际上不需要它们)。但是,我需要此功能才能在 Win (XP/Vista/7) 上运行。

我可以使用特殊的监控工具进行重启,但那样我会依赖非标准程序。我可以在 XP 上使用用户模式进程转储程序,但它不适用于 Vista。

是否有任何优雅和通用的方式(批处理文件或 perl 脚本会很棒)来为所有版本的 Windows 实现所描述的功能?

4

1 回答 1

1

关于问题的第一部分,您可以使用tasklist.
这将运行myapp.exe,必要时重新启动它:

    @echo off
    set MYAPP=myapp.exe

    rem # Loop infinitely and restart the application if it's not running
:Start
    tasklist /FI "IMAGENAME eq %MYAPP%" 2>NUL | find /I /N "%MYAPP%" >NUL
    if errorlevel 1 %MYAPP%
    call :Sleep 1
    goto Start

    rem # A short sleep subroutine to yield system resources
:Sleep
    ping 127.0.0.1 -n %1 -w 1000 > nul

关于问题的第二部分,您可以使用AutoDumpPlus收集用户模式核心转储。
例如:

    adplus -crash -quiet -pn myapp.exe -o C:\temp

这将运行 ADPlus,监控所有名为 的进程myapp.exe,并在检测到崩溃时在输出目录中生成核心转储C:\temp(当然,可以更改)。

我还没有整体测试过这个设置,但我希望它对你有用!

于 2012-06-10T16:46:02.077 回答