工控人难题二:软件闪退

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月