You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何排查Windows 10手动硬重启前导致机器冻结的异常进程

如何排查Windows 10手动硬重启前导致机器冻结的异常进程

遇到这种毫无征兆的系统冻结确实闹心,尤其是硬重启后啥线索都没留下。不过Windows其实藏了不少能事后追查的工具,结合你提到的只能依赖磁盘留存信息的情况,我给你几个实用的排查方向:

  • 先查可靠性监视器:这个工具专门记录系统稳定性相关的事件,包括进程崩溃、系统挂起、硬件故障这些。操作很简单:按下Win+R输入perfmon /rel回车,打开后能看到时间线,找到冻结发生的时间段,下面的「关键事件」里会列出挂起前后的异常——比如哪个进程突然终止、出现错误,甚至能看到系统挂起的触发源线索。

  • 深挖事件查看器的系统日志:系统日志里会留下很多冻结前的蛛丝马迹,步骤如下:

    1. 按下Win+X打开「事件查看器」,依次展开「Windows日志」→「系统」;
    2. 在右侧点击「筛选当前日志」,选择事件级别为「错误」和「警告」,定位到冻结时间点前后的事件;
    3. 重点关注这些事件ID:
      • Event ID 41:这是系统意外重启(也就是你硬重启)的记录,它的「详细信息」里能看到重启前的系统状态,比如是否有进程占用过高资源的提示;
      • Event ID 1000/1001:应用程序崩溃的记录,会明确指出哪个进程(比如具体的exe文件名)崩溃了;
      • Event ID 7000/7001:服务启动失败的记录,如果是某个关键服务挂了导致系统冻结,这里会有明确显示。
  • 提前设置性能计数器日志:因为冻结时没法实时查看性能数据,我们可以提前让Windows在后台持续记录CPU、内存、磁盘的使用情况,下次冻结重启后就能复盘:

    1. 打开「性能监视器」(Win+R输入perfmon),展开「数据收集器集」→「用户定义」,右键新建→「数据收集器集」,命名后选择「创建手动(高级)」;
    2. 勾选「性能计数器」,点击下一步,添加需要追踪的计数器:比如「处理器」→「%处理器时间」(选所有实例)、「内存」→「可用MB」、「进程」→「私有字节」「工作集」(选所有进程);
    3. 设置采样间隔(比如10秒一次,避免日志文件过大),然后指定日志保存的路径;
    4. 右键启动这个收集器集,之后系统会一直在后台记录,下次冻结重启后,回到性能监视器打开对应的日志文件,就能看到冻结前几分钟哪个进程的CPU/内存突然飙升。
  • 用ETW追踪系统挂起细节:Windows的ETW(事件追踪)能更细致地记录系统行为,适合排查复杂的冻结问题,用内置的wpr.exe命令就能操作:

    1. 以管理员身份打开命令提示符,输入wpr.exe -start cpu -start memory -filemode,这个命令会开始记录CPU和内存的详细使用日志;
    2. 当系统再次冻结并硬重启后,开机后再次以管理员身份打开命令提示符,输入wpr.exe -stop C:\temp\hangtrace.etl(路径可以自己调整);
    3. 生成的.etl文件可以用Windows自带的「Windows Performance Analyzer」(WPA)打开分析,重点看「Process」视图里哪个进程在冻结前占用了异常高的资源。
  • 排查硬件相关异常:考虑到你用的是AMD Ryzen Threadripper处理器,也可以排查硬件层面的问题:打开事件查看器的「Windows日志」→「系统」,筛选来源为「Disk」「Ntfs」「amdppm」(AMD电源管理)的事件,看看有没有磁盘读写错误、电源管理异常的提示——这些硬件问题也可能导致系统突然冻结。

如果以上方法都没找到明确线索,还可以尝试开启Windows的「内核内存转储」:右键「此电脑」→「属性」→「高级系统设置」→「启动和故障恢复」→「设置」,在「写入调试信息」里选择「内核内存转储」并指定保存路径(需要至少物理内存1/4的磁盘空间,你的128G内存对应至少32G空间)。下次冻结后会生成dump文件,用WinDbg工具分析就能精准定位导致挂起的进程或驱动。

备注:内容来源于stack exchange,提问作者JesseTG

火山引擎 最新活动