2012-05-17 3 views
0

Наше приложение недавно начало создавать (и не очищать) временные файлы с довольно высокой скоростью (хотя для доработки наших серверов CI все еще требуется несколько дней, у нас заканчиваются временные имена файлов). Это большое приложение с большой командой, работающей над ним, поэтому проблему трудно отследить, просмотрев коммиты. Есть ли хороший способ диагностировать такие проблемы?Как диагностировать временный файл «утечка»

Несколько дополнительных вещей, которые я заметил (хотя они еще не получили меня еще где-нибудь):

  • В «просочились» файлы Темп отображается в C: \ Windows \ Temp, независимо от того, какой% темп% устанавливается в
  • Они всегда пусты, как будто кто-то получает их и ничего не делает

Наконец, мы недавно начали использовать SQLite для хранения некоторых файлов локально вместо того, чтобы использовать файловую систему напрямую. Небольшой поиск показывает, что SQLite пишет там временные файлы, но все сообщения на форуме предполагают, что они массивные, где у меня есть 0 байт файлов. У кого-нибудь есть опыт работы с SQLite, создающий такую ​​проблему?

ответ

1

Метод, который, скорее всего, является вопросом Path.GetTempFileName. Проверьте, не удалили ли все вызовы на него полученный файл temprory.

+0

Я действительно ненавижу этот ответ, потому что я ненавижу найти проблемы с помощью обзора кода, тем более, что наша база данных огромна. Однако другие такты, которые я пробовал, не работали, и только через обзор кода в месте, которое недавно изменилось, мы смогли найти проблему. – tallseth

1

Вы можете использовать Process Monitor, чтобы следить за созданием этих файлов, а затем посмотреть на стек вызывающего потока на момент создания файла. Это должно сказать вам, кто делает файлы, а затем вы можете посмотреть, как используются файлы.

Просто установите фильтр для включения только «Имя процесса - XXX.exe» (где XXX - название вашей программы) и «Путь начинается с c: \ windows \ temp».

Смежные вопросы