xperf: error: TEST.Event: Invalid flags. (0x3ec).
예전에 다음과 같은 글을 소개했는데,
C# - 특정 EXE 프로세스를 종료시킨 EXE를 찾아내는 방법
; https://www.sysnet.pe.kr/2/0/11172
기본적으로 xperf.exe는 Windows 2008 r2에는 설치되어 있지 않습니다. 따라서, 다음의 링크에서 제공하는 SDK를 다운로드해,
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
; http://www.microsoft.com/en-us/download/details.aspx?id=3138
구성 요소 중 다음의 것만 설치해 주시면 됩니다.
Developer Tools / Windows Development Tools / Win32 Development Tools
설치 후 아래의 폴더에서,
C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin
wpt_x64.msi 설치 파일을 실행해 "Performance Analyzer" 구성 요소를 설치하면 아래의 경로에,
C:\Program Files\Microsoft Windows Performance Toolkit
xperf.exe가 놓이게 됩니다. 이제 다음과 같이 실습해 볼 수 있는데,
xperf.exe -start "TEST.Event" -on "Microsoft-Windows-Kernel-Audit-API-Calls" -f c:\temp\test.etl
Windows 2008 R2 이하의 서버에서는 다음과 같은 오류가 발생할 수 있습니다.
xperf: error: TEST.Event: Invalid flags. (0x3ec).
왜냐하면 2008 R2 이하에는 "Microsoft-Windows-Kernel-Audit-API-Calls" 관련한 ETW 제공자가 없기 때문입니다. 참고로 etw 제공자는 다음의 (관리자 권한의 명령창에서) 명령어로 확인할 수 있습니다.
xperf -providers
위의 명령어에 대한 출력 결과로 "Microsoft-Windows-Kernel-Audit-API-Calls" 항목이 있어야만 합니다. 물론 2008 R2에는 없고 2012 운영체제부터 관련 ETW 제공자가 출력되는 것을 확인할 수 있습니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]