IDEA项目中莫名多出一个null文件夹的排查过程(适用于排查一些不知道哪个程序创建的文件)

出现null文件夹

早在两年前,就发现有时候项目中会突然出现一个null文件夹,但是并不知道是谁创建的。同一个项目,有的组员有这个,有的没有。删除了之后过段时间又会出现,当时还以为是git有什么玄学问题,但是看仓库上又没有。
在这里插入图片描述
之前尝试排查过,还特意下了Process Monitor软件,但是一直复现不了。直到今天在一个新项目中运行test代码,突然发现出现了null文件夹(根据IDEA本地记录发现,出现null文件夹的那段时间只弄了test代码)。

需要的工具

Process monitor(进程监视器)

官网简介:进程监视器 是 Windows 的高级监视工具,可显示实时文件系统、注册表和进程/线程活动。 它结合了两个旧版 Sysinternals 实用工具(Filemon 和 Regmon)的功能,并添加了广泛的增强功能列表,包括丰富的非破坏性筛选、全面的事件属性(如会话 ID 和用户名)、可靠的进程信息、具有每个操作的集成符号支持的全线程堆栈、同时记录到文件等等。 其独特强大的功能将使进程监视器成为系统故障排除和恶意软件搜寻工具包中的核心实用工具

中文版下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procmon
英文版的截图:
在这里插入图片描述

排查过程

因为前面已经发现了是启动测试代码的时候才会生成,所以重新试了一下,删除null文件夹之后再运行测试代码,null文件夹能被创建

  1. 删除null文件夹

  2. 打开Process monitor

  3. 添加一个过滤器,只显示那个莫名其妙出现的null文件夹的事件
    在这里插入图片描述

  4. 列可以根据自己需要选择,默认的就可以看到是哪个程序创建的,但是对于Java程序来说,并不知道是哪行代码执行的,所以我都勾上了,比如时间(结合程序log日志,可以大致确定再哪一个log输出之后执行,这样就可以在最近的一个log日志输出的那里打个断点,当然,确实程序之后,你也可以直接给File类的方法打一个断点)
    在这里插入图片描述

  5. 运行test代码,然后观察Process monitor软件输出
    从监测的结果可以发现,就是pid19504java进程创建的,log日志输出的pid就是19504,所以就是测试代码的进程创建的
    在这里插入图片描述
    在这里插入图片描述
    文件夹创建完成时间是2:40:59.4683800,就可以找到在这个时间点前最近的一条log日志(也可以不用这个)
    在这里插入图片描述

  6. 确定了是这个测试代码启动导致的,就可以给File类的mkdirs打个断点(如果你的程序没有很多这种代码,就不用看什么时间创建的,直接打一个这个断点debug就可以了),最后确定是某一个依赖里面的代码导致的。在setApplicationContext里面调用了这几行代码,但是又没有配置路径属性值
    在这里插入图片描述

posted @ 2024-12-20 15:05  西瓜当冬瓜  阅读(132)  评论(0)    收藏  举报  来源