我的机器是 Windows 10,它冻结了 2 分钟,这真的很麻烦。问题是一切都太慢了,我无法看到进程列表以便进一步调查。
- 捕获导致问题的过程的最佳方法是什么?
- 我需要根据哪些因素来过滤进程列表以找到有问题的进程?(根据以前的经验,我知道在出现峰值时我应该查看内存使用情况和 CPU 使用情况。请告诉我还应该查看什么?)
我曾经prefmon
查找过 CPU 和内存峰值的时间。我更想知道如何找到麻烦的进程。我做的一个简单的技巧是安排一个作业tasklist
每分钟将输出转储到文本文件中。但是,我可以看到,当峰值发生时,安排的作业没有运行 3-4 分钟。
答案1
一种方法是,当您知道机器已挂起时,让整个机器崩溃并获取“完整”内存转储。
您应该按照以下 KBA 提前设置计算机以初始化键盘崩溃:
您还需要配置计算机以创建完整转储。快速谷歌搜索后,我找到了:
无论哪种方式,我都会假设您可以在计算机处于挂起状态时获取memory.dmp文件,然后您可以:
下载 Windows SDK以便只安装调试工具组件。这将让
Windbg
你C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe
启动
Windbg
并加载转储文件。“文件”→“打开崩溃转储”。现在这可能会变得很重,但如果你只想要一个易于使用的进程树,你可以使用名为 DbgKit 的扩展。要使用它,请将 64 位 dll 复制到
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext\
在 中
Windbg
,使用以下命令加载扩展:.load dbgkit
以下命令将显示它已加载:
.chain
然后您可以运行:
!dbgkit.ps
这将为您提供一个 Process Explorer 类型的转储视图,以便您可以查看进程正在执行的操作。提取各种信息需要一段时间,但它会为您提供所需的信息。
希望这是一个好的开始。除此之外,我建议你看看以下视频碎片整理工具9 频道系列节目关于如何调试挂起的内存转储。