0

我们的应用程序最近开始以相当高的速度创建(而不是清理)临时文件(尽管当我们用完临时文件名时,仍然需要几天的高使用来阻塞我们的 CI 服务器)。这是一个大型应用程序,有一个庞大的团队在处理它,因此很难通过审查提交来追踪问题。有没有诊断这类问题的好方法?

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

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

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

4

2 回答 2

1

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

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

于 2012-05-17T04:46:53.370 回答
1

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

于 2012-05-17T04:50:36.510 回答