0

私たちのアプリケーションは最近、非常に高い速度で一時ファイルを作成し始めました (クリーンアップはしていません) (ただし、一時ファイル名が不足すると、CI サーバーを停止させるにはまだ数日かかります)。大規模なチームが取り組んでいる大規模なアプリケーションであるため、コミットを確認して問題を追跡することは困難です。この種の問題を診断する良い方法はありますか?

私が気づいたいくつかの追加事項(ただし、まだどこにも行きませんでした):

  • 「リークされた」一時ファイルは、%temp% の設定に関係なく、c:\windows\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 に答える