记一次Mac OS上应用程序闪退问题的排查

背景

        Windows本退休了,换了Mac上岗,使用习惯上还在适应中,之前使用的一款工具软件在最近一次开机后不能使用了,表现为:双击启动程序时,程序“无响应”。

分析问题

1、为啥突然就用不了?

        常规思路,这种问题是系统环境或程序发生了什么变更导致。

        想想近期系统无升级,程序在上一次运行时勾选了一个选项而已。遂重装了该工具程序,步骤如下:

Step1.在【应用程序】中删除程序

Step2.将程序拖放至【应用程序】中完成安装

        再次启动程序,依然“无响应”。

2、程序“无响应”,是否从哪里可以获得程序的运行过程、运行状态信息?

       凭着windows上【任务管理器】的使用经验,找到了Mac上的【活动监视器】。启动工具程序时,可以在【活动监视器】上观察到程序进程先运行了、然后很快就消失了。

记一次Mac OS上应用程序闪退问题的排查_第1张图片 Mac上的【活动监视器】

        通过搜索引擎,我找到了Mac上的【控制台】,这里了记录了所有用户程序和系统程序的运行过程日志,从这里很直观地观察到,程序先启动运行,然后程序进程被kill了,从信息中可以发现kill进程的命令与最近一次设置该程序的一个选项有关。

记一次Mac OS上应用程序闪退问题的排查_第2张图片 Mac上的【控制台】

解决问题

        经过前面2点的分析,可以初步确定导致工具程序不能运行的原因是:最近一次修改了程序的一个选项设置。但是重新安装该程序仍然不能解决问题,结合该程序的安装和卸载方式(“绿色”安装),断定程序的选项设置应该是还存储在磁盘上的某个位置。

        想着工具软件是开源软件,虽然不熟悉Mac上应用程序开发,但还是本能地上GitHub 翻了源码,找到了和配置存储相关的信息:NSUserDefaults

        通过搜索引擎了解到,NSUserDefaults 可以在多个位置被找到:

~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist

        如果是“沙盒”模式,可以在如下位置找到

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist

        我删除了和工具程序相关的如下文件,然后启动程序,程序正常运行起来了。

~/Library/Preferences/com.example.myapp.plist

小结

        此次使用了【活动监视器】和【控制台】两个工具,Mac上其它工具的使用得继续摸索,系统操作方式和技巧还得继续学习;

        工具程序固然是容错处理上有点小缺陷,好在自己还能用工程师的思维解决掉;

        将这个问题反馈给开发者,帮助其完善这个好用的工具软件。

 

参考索引

Mac应用程序的NSUserDefaults数据存储在哪里?

你可能感兴趣的:(Mac)