Freigeben über


Wie werden Trace-If-Ausdrücke verwendet?

Damit Sie besser verstehen können, wie Trace-If Ausdrücke verwendet werden, stellen wir ein Beispiel für solche Ausdrücke bereit, das die Verwendung und Syntax von "begin_wpp config"-Anweisungen veranschaulicht. Dieses Beispiel bezieht sich auf eine Funktion TRACE_RETURN, die ein Ereignis protokolliert, wenn der Ausdruck FAILED(HR) true ist.

Wenn FAILED(HR) true ist, gehen Sie davon aus, dass eine Quelldatei mit status ULONG vorhanden ist, und ein Ereignis wird protokolliert, indem TRACE_RETURN(Status) aufgerufen wird.

//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp

#define WPP_LEVEL_EXP_PRE(LEVEL, HR) {if (FAILED(HR)) {
#define WPP_LEVEL_EXP_POST(LEVEL, HR) ;}}
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_LEVEL_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_LEVEL_LOGGER(ERROR)

Beachten Sie im vorherigen Beispiel, dass TRACE_RETURN zwischen der begin_wpp-Konfiguration und end_wpp Zeilen definiert ist. Auf diese Definition folgen dann das PRE/POST-Makro und die Definitionen ENABLED und LOGGER.

Die begin_wpp Konfiguration und end_wpp Trennzeichen definieren einen Konfigurationsblock, der vom Präprozessor analysiert wird. Die Datei, die die Konfigurationsblockdefinition enthält, muss von WPP überprüft werden. Diese Datei wird mit dem Parameter -scan:file.extension angegeben.

Hinweis Informationen zu -scan und anderen RUN_WPP Optionen finden Sie unter WPP-Präprozessor.

Die folgende Liste enthält weitere Informationen zu den einzelnen Anweisungen im Beispielkonfigurationsblock:

USEPREFIX
Definiert eine Präfixformatzeichenfolge, die verwendet werden soll, wenn das Ereignis protokolliert wird. Im Beispiel wird STDPREFIX verwendet. Informationen zu den mit STDPREFIX verfügbaren Werten finden Sie unter Gewusst wie Ändern der Präfixausgabe in jeder Ablaufverfolgungszeile?

USESUFFIX
Definiert eine Suffixformatzeichenfolge, die verwendet werden soll, wenn das Ereignis protokolliert wird.

FUNC
Definiert den Namen und die Signatur der Ablaufverfolgungsfunktion. Im Beispiel akzeptiert die Funktion einen Parameter und keine Formatzeichenfolge.

Ein weiteres Beispiel für Trace-If Ausdrücke finden Sie im Abschnitt Gewusst wie eine Ablaufverfolgungsanweisung in ein C/C++-Makro einschließen?