다음을 통해 공유


WPP 전처리기

이 섹션에서는 WPP 전처리기라고도 하는 Windows 소프트웨어 추적 전처리기를 설명합니다.

WPP 전처리기 호출

Visual Studio 및 MSBuild 환경을 사용하여 WPP 전처리기를 호출할 수 있습니다.

WPP 전처리기를 호출하려면

  1. 솔루션 탐색기에서 드라이버 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다 .

  2. 프로젝트 속성 페이지에서 구성 속성을 클릭하고 WPP 추적을 클릭합니다.

  3. 일반에서 WPP 실행 옵션을 예설정합니다.

  4. 명령줄에서 아래 옵션을 추가하여 추적 동작을 사용자 지정할 수 있습니다.

    예를 들어 WPP 추적에서 단일 Scan Configuration Data 파일을 지정할 수 있습니다.

    예를 들어 사용자 지정 데이터 형식을 지정하기 위해 두 개 이상의 구성 파일을 제공해야 하는 경우 -scan 옵션을 사용하여 명령줄에서 파일을 참조합니다. 예를 들면 다음과 같습니다.

    -scan:"$(KMDF_INC_PATH)\$(KMDF_VER_PATH)\WdfTraceEnums.h"
    

빌드 프로세스에 대한 자세한 내용은 TraceWPP 작업WDK 및 Visual Studio 빌드 환경을 참조하세요.

TraceWPP 도구(TraceWPP.exe)를 사용하여 빌드 환경과 별도로 전처리기를 실행할 수도 있습니다. 이 도구는 WDK의 bin/x86 하위 디렉터리에 있습니다.

WPP 추적 일반 옵션

다음 표에서는 WPP 전처리기 옵션에 대해 설명합니다. 프로젝트에 대한 WPP 추적 속성 페이지를 사용하거나 TraceWPP 도구에 대한 매개 변수로 Visual Studio에서 이러한 옵션을 구성할 수 있습니다.

WPP 추적 옵션 설명

WPP 실행

true이면 WPP를 호출합니다.

최소 다시 빌드 사용

true이면 추적된 증분 빌드가 수행됩니다. false이면 다시 빌드가 수행됩니다.

함수 및 매크로 옵션

WPP 추적 옵션 TraceWPP 명령 옵션 설명

전처리기 정의

-D매크로

매크로가 매크로의 이름인 생성된 파일의 시작 부분에 #define 매크로를 추가합니다.

이 옵션은 /D(매크로 정의) 컴파일러 옵션과 동일한 효과를 줍니다. TMH 파일의 시작 부분에 정의가 유효한지 확인하기 위해 포함됩니다.

-D매크로=확장

매크로 가 매크로의 이름이고 확장이 확장된 값인 생성된 파일의 시작 부분에 #define 매크로 확장을 추가합니다.

이 옵션은 /D(매크로 정의) 컴파일러 옵션과 동일한 효과를 줍니다. TMH 파일의 시작 부분에 정의가 유효한지 확인하기 위해 포함됩니다.

커널 모드 구성 요소 추적

-킬로미터

커널 모드 구성 요소를 추적하는 WPP_KERNEL_MODE 매크로를 정의합니다. 기본적으로 사용자 모드 구성 요소만 추적됩니다.

Dll 매크로 사용

-dll

WPP_INIT_TRACING 호출될 때마다 WPP 데이터 구조가 초기화되도록 하는 WPP_DLL 매크로를 정의합니다. 그렇지 않으면 구조체가 한 번만 초기화됩니다.

컨트롤 GUID 지정

-ctl: GUID

지정된 컨트롤 GUID를 사용하여 WPP_CONTROL_GUIDS 매크로를 정의하고 오류, 비정상적 및 노이즈라는 WPP_DEFINE_BIT 항목을 정의합니다.

소스 파일에 매크로를 추가하는 대신 사용할 수 있습니다.

GUID 는 컨트롤 GUID를 나타냅니다.

검색 및 서식 옵션

WPP 추적 옵션 TraceWPP 명령 옵션 설명

느낌표 무시

-noshrieks

WPP에 느낌표("비명"이라고도 함)를 무시하도록 지시합니다.

%!timestamp!%와 같은 복잡한 서식에 사용됩니다. 기본적으로 느낌표가 필요하며 WPP는 이를 해석하려고 시도합니다.

형식 문자열의 번호 매기기 숫자 기준

-argbase: Number

형식 문자열 번호 매기기(예: "%1!d!, %2!s!")에 대한 숫자 기반을 설정합니다. 기본값은 1입니다.

추적 메시지를 생성하는 함수

-func: FunctionDescription

DoTraceMessage 매크로에 대한 대안을 지정합니다. 그런 다음 이러한 함수를 사용하여 추적 메시지를 생성할 수 있습니다.

예를 들어 다음과 같이 추적 메시지의 플래그와 수준을 모두 지정하는 함수를 정의할 수 있습니다.

-func (DoMyTraceMessage(LEVEL,FLAGS,MSG,...)

-func 옵션의 여러 인스턴스를 사용할 수 있습니다.

이 옵션은 로컬 구성 파일에서 함수 설명을 지정하는 대신 사용할 수 있습니다.

검색할 문자열 지정

-lookfor:String

WPP가 지정된 문자열의 원본 파일을 검색하여 추적을 시작하도록 지시합니다. 기본적으로 WPP는 "WPP_INIT_TRACING" 문자열을 검색합니다.

이 옵션은 고유한 템플릿을 작성하는 사용자를 위한 고급 옵션입니다.

예를 들어 default.tpl에서 다음을 수행합니다.

IF FOUND WPP_INIT_TRACING
 INCLUDE um-init.tpl
ENDIF

모듈 이름 지정

-p: String

추적 공급자의 메시지 GUID대한 대체 이름을 지정합니다. 기본적으로 메시지 GUID의 이름은 추적 공급자가 빌드된 디렉터리의 이름입니다.

메시지 GUID의 이름은 기본적으로 변수 %1로 표시되는 추적 메시지 접두사에 나타납니다. 이 매개 변수를 사용하여 사용자가 추적 공급자의 식별 이름, 추적 공급자를 포함하는 모듈 이름 또는 여러 추적 공급자를 만들어 구현된 프로젝트의 이름과 같은 추적 공급자를 식별하는 데 도움이 되는 문자열을 접두사에 추가할 수 있습니다. 이 정보는 사용자가 서로 다른 파일 또는 다른 경로에 있는 관련 추적 공급자를 연결하는 데 도움이 됩니다.

-p 매개 변수에는 Windows Vista용 WDK(Windows 드라이버 키트) 이상 버전의 WDK에 포함된 WPP 버전이 필요합니다. -p 매개 변수는 Windows 2000 이상 버전의 Windows에서 작동합니다.

예:

-p:TraceDrv
-p:AudioModule

파일 옵션

WPP 추적 옵션 TraceWPP 명령 옵션 설명

추가 포함 디렉터리

-I Path1[;Path2]

포함 경로에 추가할 디렉터리를 하나 이상 지정합니다. 항목이 여러 개일 때에는 세미콜론으로 구분합니다. -cfgdir와 동일합니다.

구성 디렉터리

-cfgdir: Path1[;Path2]

구성 및 템플릿 파일의 위치를 지정합니다.

Path1Path2 는 디렉터리에 대한 정규화된 경로를 나타냅니다. 여러 경로를 지정할 수 있습니다. 기본값은 로컬 디렉터리입니다.

파일 확장자

-내선:. ext1 [.ext2]

WPP가 소스 파일로 인식하는 파일 형식을 지정합니다. WPP는 다른 파일 이름 확장명을 가진 파일을 무시합니다.

기본적으로 WPP는 .c, .c++, .cpp 및 .cxx 파일만 인식합니다.

이 옵션을 사용하면 WPP에서 사용하지 않는 리소스 파일(예: .rc 및 .mc 파일)을 삭제하거나 이름을 바꿀 필요 없이 WPP에 대한 기본 설정을 사용할 수 있습니다.

예를 들어 C++ 파일 및 헤더(.h) 파일에 추적을 추가하려면 다음 명령을 사용합니다.

-ext:.cpp. CPP.h.H

또한 C++ 및 헤더 파일에 대한 TMH 파일을 다른 이름으로 지정하려면 -preserveext 옵션을 사용합니다.

파일 확장자 유지

-preserveext: .ext1[.ext2]

TMH 파일을 만들 때 지정된 파일 이름 확장명을 유지합니다.

기본적으로 모든 파일 형식에 대한 TMH 파일의 이름은 filename.tmh입니다. 이로 인해 이름이 같은 소스 파일이 두 개 이상 있는 경우 파일 이름이 충돌합니다.

예를 들어 기본적으로 C 파일(.c) 및 헤더(.h) 파일에 대한 TMH 파일의 이름은 <filename.tmh>입니다. -preserveext:.c .h를 사용하여 TMH 파일의 이름은 <filename.c.tmh> 및 <filename.h.tmh>입니다.

출력 디렉터리

-odir: path

WPP에서 만드는 출력 파일의 디렉터리를 지정합니다.

경로 는 디렉터리에 대한 정규화된 경로입니다. 기본값은 로컬 디렉터리입니다.

템플릿 파일 지정

-gen{ File.tpl }. ext

WPP가 중괄호 {}사이에 지정된 이름으로 처리하는 모든 원본 파일에 대해 지정된 파일 이름 확장명을 가진 다른 파일을 만듭니다.

File.tpl은 원본 파일을 나타냅니다. *.ext는 생성된 파일의 형식과 파일 이름 확장명을 나타냅니다.

여러 -gen 옵션을 지정할 수 있습니다.

예를 들어 -gen{um-default.tpl}.tmh는 WPP가 처리하는 모든 um-default.tpl 파일에 대해 um-default.tmh 파일을 생성한다는 것을 의미합니다.

구성 데이터 검사

-scan:File

구성 파일이 아닌 파일 및 defaultwpp.ini 사용자 지정 데이터 형식과 같은 구성 데이터를 검색합니다.

구성 데이터 주위에 begin_wpp 구성end_wpp 문자열을 배치하여 식별합니다. defaultwpp.ini 사용되는 것과 동일한 형식의 구성 데이터를 사용합니다.

구성 데이터를 사용자 지정 구성 파일에 추가한 경우 -ini 매개 변수를 사용합니다.

대체 구성 파일

-defwpp:path

대체 구성 파일을 지정합니다. Wpp는 defaultwpp.ini 파일 대신 이 파일을 사용합니다.

추가 구성 파일

-ini:Path

추가 구성 파일을 지정합니다. WPP는 기본 파일 defaultwpp.ini 외에도 지정된 파일을 사용합니다.

추적을 위해 구성 데이터를 저장할 새 구성 파일을 만들 때 이 매개 변수를 사용합니다. 원본 또는 헤더 파일과 같은 다른 형식의 파일에 구성 데이터를 추가한 경우 -scan 매개 변수를 사용합니다.

WPP 빌드 프로세스

드라이버 또는 사용자 모드 애플리케이션에 대해 WPP를 사용하는 경우 드라이버 또는 애플리케이션을 빌드하면 드라이버 또는 애플리케이션 파일이 컴파일되기 전에 WPP 전처리기가 호출됩니다.

WPP 빌드 프로세스는 다음 단계를 완료합니다.

  1. WPP 전처리기는 각 소스 파일에서 WPP 매크로를 처리하고 각 소스 파일에 대한 추적 메시지 헤더 파일을 만듭니다. 소스 코드는 직접 수정되지 않습니다.

  2. WPP 전처리기에서 추적 메시지 헤더 파일을 만든 후 C 전처리기는 기본 제공 WPP 매크로를 추적 메시지 헤더 파일에서 정상적으로 처리합니다.