Инструмент для записи дискового ввода-вывода конкретного процесса в файл

1324
Soonts

Я использую Windows 8 x64. MSSE (переименованный в Защитник Windows) постоянно вызывает BSoD во время быстрого сканирования (проблема описана здесь ). Я хочу выяснить, к какому последнему файлу (файлам) он обращался.

Обычно я использую SysInternals Process Monitor для таких задач. Тем не менее, он не имеет возможности сохранять события по мере их генерации, и, поскольку система падает с BSoD, я не вижу никакого вывода.

Знаете ли вы инструмент для мониторинга дискового ввода-вывода, как SysInternals Process Monitor, который сохраняет все данные на жестком диске (конечно, отфильтровывая свой собственный дисковый ввод-вывод)?

1

2 ответа на вопрос

2
magicandre1981
  1. Включить полный аварийный дамп. Нажмите Win+ Pause, перейдите в «Дополнительные параметры системы» → вкладка «Дополнительно» и в разделе «Запуск и восстановление» нажмите «Настройки».

  2. Убедитесь, что ваш файл подкачки достаточно большой, чтобы вместить полный дамп, то есть, по крайней мере, объем оперативной памяти + 256 МБ.

    • перейдите в «Расширенные настройки системы» → вкладка «Дополнительно»

    • в разделе «Производительность» нажмите «Настройки» и перейдите на вкладку «Дополнительно».

    • нажмите «Изменить ..» и выберите «Нестандартный размер»

    • не забудьте нажать Set до OK, просто OK не будет работать

    Если после этого на системном диске остается меньше (25 ГБ + объем ОЗУ), выполните следующие действия:

    • открыть Regedit

    • перейдите к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

    • создать ключ DWORD AlwaysKeepMemoryDumpсо значением 1

    • перезагружать

  3. Запустите трассировку Xperf ( xperf –on DiagEasyиз консоли администратора), которая фиксирует активность жесткого диска.

  4. Запустите MSE (или Защитник Windows) и дождитесь сбоя.

  5. Перезагрузитесь в Windows и откройте файл Memory.dmp с помощью WinDbg. Внутри Windbg выполните следующую команду, чтобы увидеть все активные журналы ETW:

    !wmitrace.strdump 
  6. Посмотрите, какой номер "NT Kernel Logger". Теперь выполните следующую команду для экспорта данных в файл ETL:

    !wmitrace.logsave 0xNUMBER c:\DISK.etl 
  7. Откройте файл ETL в xperfview / WPA и посмотрите на график дискового ввода-вывода, к каким файлам обращались.

Мне удалось создать полный дамп и сохранить ETL. Проблема заключается в том, что WPA не хочет открывать ETL, говоря, что «Trace C: \ Temp \ Crashes \ DISK.etl не может быть успешно открыт [0x80070570]. Операция прерывания». Есть идеи? Soonts 11 лет назад 0
Код означает, что файл поврежден (0x80070570 = ERROR_FILE_CORRUPT). Попробуйте вместо этого открыть ETL с помощью xperfview. magicandre1981 11 лет назад 0
Та же ошибка Кстати, я чувствую, что эти два инструмента (wpa.exe и xperfview.exe) являются просто тонкими обертками над некоторой общей библиотекой (даже заголовок сообщения об ошибке совпадает с «Windows Performance Analyzer»). Пробовал воссоздавать ETL - не повезло. Soonts 11 лет назад 0
спросите MSFT здесь в комментариях или по почте, как избежать поврежденных файлов ETL: http://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-29-WinDbg-ETW-Logging magicandre1981 11 лет назад 1
0
grawity

Process Monitor может записывать в файл журнала на диске, см. Файл → Резервные файлы .

Нету. Файл 'C: \ Temp \ 2remove \ FileIO.PML' не был полностью закрыт во время захвата и поврежден. Soonts 11 лет назад 1