2013-03-22 134 views
0

我正在做一些我正在运行的软件的分析工作。该软件似乎有一些内存问题,沿线难以追查。我们决定使用Sysinternals VMMap来跟踪软件使用的内存。在批处理脚本中使用VMMap

我们有VMMap使用Windows调度程序每20秒导出一次使用情况,以启动一个批处理脚本,该脚本将目标进程PID拉回并启动VMMap。该过程运行一段时间,输出显示出来的目录,但过了一段时间停止。 Windows调度程序报告作业正常运行,并在触发器意味着再次没有输出时启动另一个实例。

经过一番调查后,它看起来像VMMap无法打开进程,并试图通过其GUI来报告错误。由于我们正在批量运行,因此我们无法看到此错误消除它。这导致了许多过程的产生,但实际上并没有做任何事情。

有没有人在使用VMMap时遇到过这个问题,或者知道任何可能有用的东西?我想可能有一些我可以通过的标志抑制消息,或者我可以在批处理中处理它,但Google没有帮助,也没有Sysinternals论坛。任何帮助将非常感激。

回答

0

VMMap是一个GUI工具,所以试图以自动方式捕获它的输出将是困难的。相反,尝试使用另一个SysInternals工具Handle,该工具捕获许多相同的信息,但在命令行上导出/报告它可以更容易地捕获它。或者,不要在使用VMMap时以自动重复的方式运行输出,而是让脚本以某种方式检测错误或缺少预期的结果/数据并停止,以便可以检查GUI输出。

+1

这是我们最终选择的方法。我们通过在调用之前重新检查传入一个无效PID的可能性最小化(因为它在for循环中,有时PID在它到达之前关闭),并且在我们知道它们不应该正在运行时关闭正在运行的任何VMMap进程。 – MattD 2013-03-25 14:47:19

0

所有Sysinternals工具在第一次在新机器上启动以接受许可时弹出一个同意对话框。我认为您确实将该工具部署到生产机器上,并试图显示同意对话框,但没有人按下确定。

他们基本上在机器上创建一个注册表项,如果您需要全自动部署,或者您可以在目标机器上为相关用户启动一次,那么您可以伪造该注册表项。

+0

我们已经确认接受初始许可证对话框,过程发起并创建了一段时间的数据,但一段时间后停止 – MattD 2013-03-25 14:42:16