如何诊断临时文件“泄漏”

时间:2012-05-17 04:40:57

标签: c# sqlite system.data.sqlite

我们的应用程序最近开始以相当高的速率创建(而不是清理)临时文件(尽管在我们用尽临时文件名时仍然需要花费几天的时间来阻止我们的CI服务器)。这是一个庞大的应用程序,有一个庞大的团队正在研究它,所以通过审查提交很难找到问题。有没有一种很好的方法来诊断这类问题?

我注意到了一些额外的事情(尽管他们还没有把我带到任何地方):

  • “泄露的”临时文件显示在c:\ windows \ temp中,无论%temp%设置为
  • 他们总是空着,好像有人得到他们而什么都不做

最后,我们最近开始使用sqlite在本地存储一些文件,而不是直接使用文件系统。一点点搜索表明SQLite在那里写了一些临时文件,但所有论坛帖子都表明它们很大,我有0字节文件。任何人都有使用SQLite创建这样的问题的经验吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Process Monitor来监视这些文件的创建,然后在创建文件时查看调用线程的堆栈。这应该告诉你谁制作文件,然后你也可以观看文件的使用方式。

只需将过滤器设置为仅包含"进程名称为XXX.exe" (其中XXX是您的程序的名称)和"路径以c:\ windows \ temp"开头。

答案 1 :(得分:1)

最有可能出现问题的方法是Path.GetTempFileName。检查是否所有调用都删除了生成的temprory文件。