关于排查应用引发电脑死机问题的技术求助及日志建议
排查应用长期运行后触发系统意外关机的思路
听起来你碰到了个挺头疼的状况——客户一口咬定你的应用跑几个小时后会让他电脑死机,你已经在他机器上用Task Manager盯了好久,GDI资源、内存占用、CPU使用率都查了,愣是没发现啥明显异常。还好客户允许调试,从Event Viewer里拿到了关键日志:
Error: 04-19-2018 13:49:30 The system has been shutdown unexpectedly at 04-19-2018 00:27:04
用户当时是发现系统完全没响应,才长按电源强制关机的。结合这些信息,我给你几个后续排查的方向,说不定能找到症结:
先排除系统硬件/驱动层面的锅
意外关机的锅不一定全在你的应用上,先把硬件和驱动的可能性排除掉:- 运行
chkdsk /f命令检查磁盘有没有坏道或者文件系统错误,磁盘问题有时候会导致系统无响应甚至强制关机 - 盯着CPU和显卡的温度看——过热是系统意外关机的常见元凶,Task Manager的性能页就能看,或者让客户装个简单的温度监测工具跑一段时间
- 督促客户把显卡、主板、电源相关的驱动都更到最新,老旧驱动和新应用长期运行很容易出兼容性冲突
- 运行
深挖应用隐藏的长期资源泄漏
你监测的几个指标没问题,但有些资源泄漏是“慢刀子”,得积累很久才会触发系统级问题:- 除了GDI,重点盯句柄数(Handles)和线程数(Threads)——比如没关闭的文件句柄、没释放的网络连接,这些玩意儿积累多了会把系统资源耗干,Task Manager的详细信息页能看到这些数据
- 用专业的内存分析工具(比如Visual Studio的Memory Profiler)挂着应用跑,追踪非托管资源的释放情况——这类资源在Task Manager的内存统计里可能藏得很深,肉眼看不出来
扒一扒系统崩溃前后的详细日志
你拿到的只是意外关机的结果日志,得往前找前置线索:- 去Event Viewer的系统日志里,翻04-19-2018 00:27:04前后10到15分钟的所有警告和错误事件,重点看和电源、硬件、驱动相关的条目,说不定能找到崩溃前的异常信号
- 如果客户电脑开了内存转储(Memory Dump),直接拿dump文件用WinDbg分析——这是定位系统崩溃原因最直接的方式,能精准查到是哪个进程或者组件出了问题
模拟真实场景复现问题
单一应用长时间运行可能出不了问题,得模拟用户的真实使用环境:- 让应用持续跑24小时以上,同时让客户正常用其他常用软件,比如浏览器、办公工具啥的,说不定是应用和其他软件的长期交互出了问题
- 在应用里模拟高负载场景,比如批量处理数据、多并发操作,看看能不能加速触发死机,这样排查起来也省时间
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

