我正在基于Cygwin的环境中进行开发。使用在Windows 7上运行的Cygwin附带的标准make等。
几天前,我发现我有大约65个大小为0的临时文件。这些文件的名称与mktemp的标准模式相匹配。 mktemp在一些情况下用于可能在构建期间处理的shell脚本中,所以我一直在寻找删除使用mktemp创建但未找到任何文件的文件。最后,我发现只需在最新的现有构建上调用make(因此make不做任何事情),在make完成后会留下7个临时文件。
我尝试使用sysinternals的Process Monitor,发现是的,这些文件实际上是由mktemp创建的。但是,来自Process Monitor的堆栈跟踪直接进入位于setpassent + 0x221c位置的cygwin1.dll,然后继续进入操作系统(Windows 7)。我原本期望堆栈包含bash,make或构建中使用的任何其他工具,但没有。
遇到类似情况并找到解决方案的任何人?有关如何继续搜索谁创建这些临时文件的任何提示或想法?它确实会影响开发人员工作站的性能,因此必须解决它。我不愿意添加一个通用的干净,因为这可能会影响不应该删除的临时文件。任何建议表示赞赏!
答案 0 :(得分:-1)
(问题在评论中回答。见Question with no answers, but issue solved in the comments (or extended in chat))
@Etan Reisner写道:
OP写道:仅仅为许多制作设置的记录而言,对于完全最新构建的目录,声明“make不做任何事情”是不正确的。它应该为真,但许多设置都没有正确写入。
我会尝试
strace
看看你是否可以弄清楚正在运行的是什么。{/ 1}。
你们都是对的。由于
mktemp
表达式,make确实运行了一些脚本,$(shell
非常适合跟踪它。