今天远程帮助一个用户处理应用闪退的问题,昨天已经远程过一次,但是没有解决问题。
一、背景。
这个应用是一个 Windows 桌面端的应用,基于 Electron 构建的,Electron 应用集成了 crashReporter,也集成了electron-log 用来记录日志。
用户的系统是 Windows 7, 64bit。
现象是:在桌面上双击打开应用,应用闪一下,然后直接退出。
二、第一次远程。
第一次远程没有定位到原因。我看了日志,只记录了:发现了一个新版本。看了崩溃日志,发现有一个崩溃 report(C:\Users[登录用户]\AppData\Roaming[应用名称]\Crashpad\reports)。
因为发现了崩溃日志,我就以为是由于系统差异而导致的崩溃,但询问客户后,客户反馈说,前几天是可以正常使用的。我就建议客户重启系统,重启系统后远程就断了,之后也无法联系用户了(到下班时间了)。
三、第二次远程。
自上次远程之后用户一直没有反馈消息,我还以为重启大法生效了。直到下午四点多,用户突然又要求远程协助。心里咯噔一下,我也不知道怎样排查了,难道要分析 dmp 文件(crashReporter 生成的文件)?那就很麻烦了。
远程连接上之后,按照昨天的排查思路排查了一遍,依然没有头绪。
重启不行,那就重装,得到用户的同意后,就重新装了应用。重装后打开应用,还是闪退。
覆盖安装不行,那就彻底删除后再安装。但是,还是闪退。
彻底没头绪了,和同事说了一嘴,他回应说:会不会是权限问题?我回答说,用户之前是可以用的,应该不会是权限问题。然后他又说,会不会是被安全软件拦截了?然后我就排查用户的电脑是不是安装了安全软件,看了一下,发现用户的电脑安装了 360 安全卫士。我说拦截也会有提示吧?针对这块没有写日志,要怎样验证?
同事说,那简单,在命令行执行这个 .exe 看命令行提示就知道了。
在桌面对着应用右键,选择“打开文件所在位置”,然后在地址栏输入 cmd 打开 Windows 终端,在命令行输入 xxx.exe 然后命令提示了: xxxxx,看到提示后知道是权限不够。然后另一个同事说,要不先把 360 安全卫士关了试一试。排查:先关掉 360 安全卫士,再打开软件,能正常打开了,欢天喜地,定位到问题了。
解决:360 安全卫士里把这个应用添加到可信任列表。
至此,问题圆满解决。