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 смог успешно выполнить сбор. Приветствия.