0

我正在对我们在我工作的地方运行的一些软件进行一些分析工作。该软件似乎在某些地方存在内存问题,这些问题被证明难以追踪。我们决定使用 Sysinternals VMMap 来跟踪软件使用的内存。

我们让 VMMap 使用 Windows 调度程序每 20 秒导出一次使用情况,以启动一个批处理脚本,该脚本会拉回目标进程 PID 并使用它启动 VMMap。该过程运行了一段时间,输出出现在 out 目录中,但过了一会儿它停止了。Windows 调度程序报告作业运行良好,并将在触发时启动另一个实例,再次没有输出。

经过一番调查,VMMap 似乎无法打开进程并试图通过其 GUI 报告错误。由于我们是批量运行的,因此我们看不到此错误以将其关闭。这导致产生了许多进程,但实际上并没有做任何事情。

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

4

2 回答 2

0

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

于 2013-03-24T07:30:11.237 回答
0

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

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

于 2013-03-24T09:53:53.613 回答