Udostępnij przez


Preprocesor WPP

W tej sekcji opisano preprocesor śledzenia oprogramowania systemu Windows, powszechnie znany jako preprocesor WPP.

Wywoływanie preprocesora WPP

Preprocesor programu WPP można wywołać przy użyciu programu Visual Studio i środowiska MSBuild.

Aby wywołać preprocesor WPP

  1. Kliknij prawym przyciskiem myszy projekt sterownika w Eksploratorze rozwiązań i kliknij polecenie Właściwości.

  2. Na stronie właściwości projektu kliknij pozycję Właściwości konfiguracji , a następnie kliknij pozycję Śledzenie programu WPP

  3. W obszarze Ogólne ustaw opcję Uruchom program WPP na Wartość Tak.

  4. W obszarze Wiersz polecenia możesz dodać poniższe opcje, aby dostosować zachowanie śledzenia.

    Na przykład w obszarze Śledzenie programu WPP można określić pojedynczy plik danych konfiguracji skanowania .

    Jeśli musisz podać więcej niż jeden plik konfiguracji, na przykład aby określić niestandardowe typy danych, odwołaj się do pliku w wierszu polecenia przy użyciu opcji -scan , na przykład:

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

Aby uzyskać więcej informacji na temat procesu kompilacji, zobacz TraceWPP task and WDK and Visual Studio build environment (Środowisko kompilacji TraceWPP i WDK i Visual Studio).

Można również uruchomić preprocesor oddzielony od środowiska kompilacji przy użyciu narzędzia TraceWPP (TraceWPP.exe). To narzędzie znajduje się w podkatalogu bin/x86 zestawu WDK.

Ogólne opcje śledzenia programu WPP

W poniższych tabelach opisano opcje preprocesora WPP. Można skonfigurować te opcje w programie Visual Studio, korzystając ze strony właściwości WPP Tracing dla projektu, lub jako parametry narzędzia TraceWPP.

Opcja śledzenia WPP Opis

Uruchamianie programu WPP

Jeśli warunek jest spełniony (true), wywoływany jest program WPP.

Włącz minimalną ponowną kompilację

W przypadku wartości true jest wykonywana śledzona kompilacja przyrostowa; jeśli wartość false, wykonywana jest ponowna kompilacja.

Opcje funkcji i makr

Opcja śledzenia WPP Opcja polecenia TraceWPP Opis

Definicje preprocesora

-DMakro

Dodaje #defineMakro na początku wygenerowanego pliku, w którym Makro jest nazwą makra.

Ta opcja ma taki sam efekt jak /D (zdefiniuj makro) opcji kompilatora. Jest on uwzględniony, aby upewnić się, że definicje są prawidłowe na początku plików TMH.

-DRozszerzeniemakra=

Dodaje #defineRozszerzenie makra na początku wygenerowanego pliku, w którym makro jest nazwą makra, a rozszerzenie jest rozszerzoną wartością.

Ta opcja ma taki sam efekt jak /D (zdefiniuj makro) opcji kompilatora. Jest on uwzględniony, aby upewnić się, że definicje są prawidłowe na początku plików TMH.

Śledzenie komponentów Kernel-Mode

-kilometr

Definiuje makro WPP_KERNEL_MODE, które śledzi składniki trybu jądra. Domyślnie śledzone są tylko składniki trybu użytkownika.

Włącz makro DLL

-Dll

Definiuje makro WPP_DLL, które powoduje, że struktury danych WPP są inicjowane przy każdym wywołaniu WPP_INIT_TRACING. W przeciwnym razie struktury są inicjalizowane tylko raz.

Określanie identyfikatora GUID kontrolki

-ctl:GUID

Definiuje makro WPP_CONTROL_GUIDS z określonym identyfikatorem GUID kontrolki i wpisami WPP_DEFINE_BIT o nazwie Błąd, Nietypowe i Szum.

Jest to alternatywa dla dodania makra do pliku źródłowego.

GUID reprezentuje identyfikator kontrolki

Opcje wyszukiwania i formatowania

Opcja śledzenia WPP Opcja polecenia TraceWPP Opis

Ignoruj znaki wykrzyknika

-noshrieks

Przekierowuje program WPP do ignorowania wykrzykników, nazywanych również "shrieks".

Używany w formatowaniu złożonym, takim jak %!znacznik czasu!%. Domyślnie wykrzykniki są wymagane, a program WPP próbuje je zinterpretować.

Podstawa liczbowa do numerowania ciągów formatu

-argbase:Number

Ustanawia bazę liczbową dla numerowania ciągów formatu, takich jak "%1!d!, %2!s!". Wartość domyślna to 1.

Funkcja do generowania komunikatów śledzenia

-func:FunctionDescription

Określa alternatywy dla makra DoTraceMessage . Te funkcje mogą być następnie używane do generowania komunikatów śledzenia.

Można na przykład zdefiniować funkcję określającą zarówno flagi, jak i poziom komunikatu śledzenia, na przykład:

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

Można użyć wielu wystąpień opcji -func .

Ta opcja jest alternatywą do określania opisów funkcji w lokalnym pliku konfiguracji.

Określ ciąg znaków do wyszukania

-lookfor:String

Przekierowuje program WPP do przeszukiwania plików źródłowych dla określonego ciągu w celu zainicjowania śledzenia. Domyślnie program WPP wyszukuje ciąg "WPP_INIT_TRACING".

Jest to zaawansowana opcja dla użytkowników, którzy piszą własne szablony.

Na przykład w pliku default.tpl:

IF FOUND WPP_INIT_TRACING
 INCLUDE um-init.tpl
ENDIF

Określ nazwę modułu

-p:String

Określa alternatywną przyjazną nazwę identyfikatora GUID komunikatów od tego dostawcy śledzenia. Domyślnie przyjazna nazwa GUID komunikatu to nazwa katalogu, w którym zbudowano dostawcę śledzenia.

Przyjazna nazwa identyfikatora GUID komunikatu jest domyślnie wyświetlana w prefiksie komunikatu śledzenia reprezentowanym przez zmienną %1. Za pomocą tego parametru można dodać ciąg do prefiksu, który pomaga użytkownikowi zidentyfikować dostawcę śledzenia, na przykład przyjazną nazwę dostawcy śledzenia, nazwę modułu zawierającego dostawcę śledzenia lub nazwę projektu zaimplementowanego przez utworzenie kilku dostawców śledzenia. Te informacje ułatwiają użytkownikom kojarzenie powiązanych dostawców śledzenia, którzy znajdują się w różnych plikach lub różnych ścieżkach.

Parametr -p wymaga wersji programu WPP dołączonej do zestawu Windows Driver Kit (WDK) dla systemu Windows Vista i nowszych wersji zestawu WDK. Parametr -p działa w systemie Windows 2000 i nowszych wersjach systemu Windows.

Przykłady:

-p:TraceDrv
-p:AudioModule

Opcje pliku

Opcja śledzenia WPP Opcja polecenia TraceWPP Opis

Dodatkowe katalogi dołączania

-IŚcieżka1[;Ścieżka2]

Określa co najmniej jeden katalog do dodania do ścieżki dołączania; rozdzielać średnikami, jeśli więcej niż jeden. Tak samo jak -cfgdir.

Katalogi konfiguracji

-cfgdir:Path1[;Path2]

Określa lokalizację plików konfiguracji i szablonu.

Ścieżka1 i Ścieżka2 reprezentują w pełni kwalifikowaną ścieżkę do katalogu. Można określić wiele ścieżek. Wartość domyślna to katalog lokalny.

Rozszerzenia plików

-ext:.ext1[.ext2]

Określa typy plików rozpoznawane przez program WPP jako pliki źródłowe. Program WPP ignoruje pliki z innym rozszerzeniem nazwy pliku.

Domyślnie program WPP rozpoznaje tylko pliki .c, .c++, .cpp i .cxx.

Ta opcja umożliwia używanie ustawień domyślnych dla programu WPP bez konieczności usuwania lub zmieniania nazw plików zasobów, których program WPP nie używa, takich jak pliki rc i .mc.

Aby na przykład dodać śledzenie do plików C++ i plików nagłówkowych (.h), użyj następującego polecenia:

-ext:.cpp.CPP.h.H

Ponadto, aby nadać różne nazwy plikom TMH tworzonym dla plików C++ oraz plików nagłówkowych, użyj opcji -preserveext.

Zachowywanie rozszerzeń plików

-preserveext:.ext1[.ext2]

Zachowuje określone rozszerzenia nazw plików podczas tworzenia plików TMH.

Domyślnie pliki TMH dla wszystkich typów plików mają nazwę nazwa_pliku.tmh. Spowodowało to konflikty nazw plików, gdy masz więcej niż jeden plik źródłowy o tej samej nazwie.

Na przykład domyślnie pliki TMH dla plików C (c) i nagłówków (.h) będą miały nazwę <nazwa_pliku.tmh>. Poprzez użycie -preserveext:.c .h, pliki TMH mają nazwę <nazwa_pliku>.c.tmh i <nazwa_pliku>.h.tmh.

Katalog wyjściowy

-odir:path

Określa katalog dla plików wyjściowych tworzonych przez program WPP.

Ścieżka jest w pełni kwalifikowaną ścieżką do katalogu. Wartość domyślna to katalog lokalny.

Określanie pliku szablonu

-gen{ File.tpl }. ext

Dla każdego pliku źródłowego, który program WPP przetwarza z nazwą określoną między nawiasami klamrowymi {}, utwórz inny plik z określonym rozszerzeniem nazwy pliku.

Plik.tpl reprezentuje plik źródłowy. *.ext reprezentuje typ utworzonego pliku i jego rozszerzenie nazwy pliku.

Można określić wiele opcji -gen .

Na przykład -gen{um-default.tpl}.tmh oznacza, że dla każdego pliku um-default.tpl, który przetwarza program WPP, tworzy plik um-default.tmh.

Skanowanie danych konfiguracji

-scan:File

Wyszukuje dane konfiguracji, takie jak niestandardowe typy danych, w pliku, który nie jest plikiem konfiguracji, a także w defaultwpp.ini.

Umieść begin_wpp config i end_wpp ciągi wokół danych konfiguracji, aby je zidentyfikować. Użyj tego samego formatu dla danych konfiguracji, które są używane w defaultwpp.ini.

Jeśli dane konfiguracji zostały dodane do niestandardowego pliku konfiguracji, użyj parametru -ini .

Alternatywny plik konfiguracji

-defwpp:ścieżka

Określa alternatywny plik konfiguracji. Wpp używa tego pliku zamiast pliku defaultwpp.ini.

Dodatkowy plik konfiguracji

-ini:Ścieżka

Określa dodatkowy plik konfiguracji. Program WPP używa określonego pliku oprócz pliku domyślnego, defaultwpp.ini.

Użyj tego parametru podczas tworzenia nowego pliku konfiguracji do przechowywania danych konfiguracji na potrzeby śledzenia. Jeśli dane konfiguracji zostały dodane do innego typu pliku, takiego jak plik źródłowy lub nagłówek, użyj parametru -scan .

Proces kompilacji programu WPP

Jeśli program WPP jest włączony dla aplikacji sterownika lub trybu użytkownika, kompilowanie sterownika lub aplikacji wywołuje preprocesor programu WPP przed skompilowaniem plików sterownika lub aplikacji.

Proces kompilacji programu WPP wykonuje następujące kroki:

  1. Preprocesor WPP przetwarza makra WPP w każdym pliku źródłowym i tworzy plik nagłówka komunikatu śledzenia dla każdego pliku źródłowego. Kod źródłowy nie jest bezpośrednio modyfikowany.

  2. Gdy preprocesor WPP utworzył pliki nagłówka komunikatów śledzenia, preprocesor języka C przetwarza wbudowane makra WPP w plikach nagłówków komunikatów śledzenia w normalny sposób.