工控人难题二:软件闪退
1 前言
工控人现场调试过程中经常会遇到软件闪退现象。一时无从下手,又找不到方法,之前我发过一篇《INTOUCH闪退处理排查和处理方案》,这一个是它的进阶篇,适用范围更宽泛,主要是介绍思路。
2 软件排查步骤
2.1 重启电脑
工控项目中任何软硬件的故常排查一定是从重启开始的,重启无效才是真正的排查,千万不要忽略这一步,也许你千辛万苦不如一次关机重启。
2.2 找到闪退相关软件log设置,研究导出log日志
各软件有各自的设置,导出日志内容范围。这一步就是打开日志记录开关,它是一把钥匙。
此次以Architect Multiplexer软件为例。
logLevel=5 => Logging of library trace, trace, information, warnings and errors
2.3 搜集WINDOWS日志
遇到闪退老规矩先收集WINDOWS日志
按下组合键win+r,然后输入’eventvwr.exe‘,然后回车就可以打开事件查看器了。储存下应用程序和系统日志便于后续查看。
2.4 DMP文件转储
DMP文件有时候也是能查出一定问题的。
2.4.1 手动转储
2.4.2 自动转储
https://www.cnblogs.com/InCerry/p/how_to_automic_create_dump_when_app_cr...
Windows中开启dump的方法_设置 windwos启动 dump cmd命令-CSDN博客
这两个帖子要结合着看。
在 Windows 中,可以将 Windows 错误报告 (WER) 配置为在应用程序崩溃时生成转储。
(1)打开regedit.exe
(2) 打开目录HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
(3)创建KEY DumpFolder 类型为REG_EXPAND_SZ用于配置存放Dump文件的目录
(4)另外可以创建KEY DumpCount 类型为REG_DWORD配置Dump的总数量
按照上面的配置,如果程序发生了异常退出,那么就会在%LOCALAPPDATA%\CrashDumps目录创建程序的Dump。如下图所示:
2.5 日志对比分析
目前我们拿到了软件LOG 、windows日志、DMP文件基本上就能分析出个大概。
3 硬件排查步骤
如果上述软件日志均没有查出问题,那我们只有开始痛苦的单一变量撸硬件了。
这个项目网络结构大概是这个样子,星型链接稍微复杂也还算清晰。
3.1 检查配置和网络稳定性
这个软件配置涉及IP、COM串口、波特率、奇偶校验、轮询地址。。。总之呢,现场有能正常运行的。我们就认为软件没问题,要逐条仔细对比看看自己是不是哪里配置错了。
检查网络稳定性:CMD命令字符中输入ping 192.168.*.* -t >>D:\log.txt会自动导出日志(上一篇介绍过)。
3.2 电脑更换
软件闪退就很有可能是电脑问题,更换一台试试。
3.3 跳过交换机等中间节点
中间节点有交换机(尤其是网管型)我们给它跳过去,直连PLC的通讯卡。拒绝中间商搞破坏。
3.4 PLC排查
PLC是不是有问题呢,我们有回到软件排查的第一步,上下电重启,CPU和通讯卡都插拔一遍。
3.5 单一变量更换设备
单一变量逐个更换,顺序自下而上。通讯卡---CPU----IO卡。这个步骤一定要耐心,做到一步一等待,一步一测试(是否还闪退)。
项目中通讯卡CPU都是冗余的,不要为了速度,一股脑全换,一次错过会是终身的遗憾。
冗余你就分两次,催你你就告诉他slowly,心态要好,工控人要抗压。
4 总结
这个软件闪退排查实例,我一直干到步骤3.5。可能是我目前经历的最难排查的一次经历了,希望大家多总结经验,共同研究探讨。
2025年04月