PerfView - невозможно создать файл, если этот файл уже существует. (Исключение из HRESULT: 0x800700B7)

Когда я пытаюсь создать файл ETL с помощью PerfView v1.9.0.0 (Collect -> Collect -> Start Collection, с параметрами по умолчанию), происходит сбой операции, в результате которой появляется сообщение "Произошло исключительное состояние, подробности см. В журнале".

Ниже то, что я вижу в журнале:

Started with command line: "C:\Users\XYZ\Desktop\PerfView.exe" 
PerfView Version: 1.9.0.0  BuildDate: Fri 02/12/2016 11:19:34.83
Started: View
Warning: PdbScope not found at C:\Users\XYZ\Desktop\PerfViewExtensions\PdbScope.exe
Disabling the Image Size Menu Item.
Warning: ILSize not found at C:\Users\XYZ\Desktop\PerfViewExtensions\ILSize.dll
Disabling the IL Size Menu Item.
Completed: View   (Elapsed Time: 0.021 sec)
Collection Dialog open.
Started: Collecting data C:\Users\XYZ\Desktop\PerfViewData.etl
[Kernel Log: C:\Users\XYZ\Desktop\PerfViewData.kernel.etl]
Kernel keywords enabled: Default
Aborting tracing for sessions 'NT Kernel Logger' and 'PerfViewSession'.
Insuring .NET Allocation profiler not installed.
Completed: Collecting data C:\Users\XYZ\Desktop\PerfViewData.etl   (Elapsed Time: 1.300 sec)
Exception Occurred: System.Runtime.InteropServices.COMException (0x800700B7): Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableKernelProvider(Keywords flags, Keywords stackCapture)
   at PerfView.CommandProcessor.Start(CommandLineArgs parsedArgs)
   at PerfView.CommandProcessor.Collect(CommandLineArgs parsedArgs)
   at PerfView.MainWindow.<>c__DisplayClass13_0.<ExecuteCommand>b__0()
   at PerfView.StatusBar.<>c__DisplayClass19_0.<StartWork>b__0(Object <state>)
An exceptional condition occurred, see log for details.

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

Что я делаю неправильно?

2 ответа

Решение

До Windows 7 вы можете использовать только один сеанс ядра с именем NT Kernel Logger. Начиная с Windows 8, вы можете создавать новые сессии с другим именем.

В Windows 8, Windows Server 2012 и более поздних версиях SystemTraceProvider можно мультиплексировать до 8 сеансов ведения журнала. Первые два слота для сеансов регистратора зарезервированы для регистратора ядра NT и регистратора контекста кольцевого ядра.

Так что остановите инструменты, которые используют NT Kernel Logger (например, Process Explorer, Process Hacker, Resmon), чтобы решить эту проблему.

Спасибо magicandre1981 за ваше предложение. Я действительно использую Windows 7, и я запустил Process Hacker. После остановки Process Hacker PerfView смог успешно выполнить сбор. Приветствия.

Другие вопросы по тегам