Freigeben über


Gewusst wie Ablaufverfolgungsfunktionseintrag und -beendigung?

Der folgende Beispielcode zeigt, wie Sie Funktionseingabe- und -beendigungsaufrufe nachverfolgen.

Fügen Sie zunächst die Definition des WPP_CONTROL_GUIDS Makros einer Quell- oder Headerdatei hinzu. Definieren Sie beim Definieren der Ablaufverfolgungsflags ein Flag für die Funktionsablaufverfolgung, wie im folgenden Beispiel gezeigt:

#define WPP_CONTROL_GUIDS \
    WPP_DEFINE_CONTROL_GUID(CtlGuid,(a044090f,3d9d,48cf,b7ee,9fb114702dc1),  \
        WPP_DEFINE_BIT(ERROR)                \
        WPP_DEFINE_BIT(Unusual)              \
        WPP_DEFINE_BIT(Noise)                \
 WPP_DEFINE_BIT(FuncTrace) )

Fügen Sie dann in derselben Datei die Konfigurationsdaten für die Ablaufverfolgungsmeldungen hinzu. Starten Sie die Konfigurationsdaten mit einer begin_wpp config-Anweisung , und beenden Sie sie mit einer end_wpp-Anweisung . Fügen Sie dann die Definitionen für die Makros hinzu, die FuncTrace unterstützen.

// begin_wpp config
// FUNC FuncEntry();
// FUNC FuncExit();
// USESUFFIX(FuncEntry, " Entry to %!FUNC!");
// USESUFFIX(FuncExit, " Exit from %!FUNC!");
// end_wpp

// Map the null flags used by Entry/Exit to a function called FuncTrace
#define WPP__ENABLED() WPP_LEVEL_ENABLED(FuncTrace)
#define WPP__LOGGER() WPP_LEVEL_LOGGER(FuncTrace)

Umschließen Sie den Funktionscode in der Quelldatei mit Aufrufen von FuncEntry() und FuncExit().

#include "mytrace.h"
#include "entryexit.tmh"
void examplesub(int x)
{
    FuncEntry();
    // function code
    FuncExit();
}

Beispiel:

#include "mytrace.h"
#include "entryexit.tmh"
void examplesub(int x)
{
    FuncEntry();
       DoTraceMessage(Noise, "Value is %d",x);
    FuncExit();
}

Wenn Sie Konfigurationsdaten in eine Headerdatei einfügen, verwenden Sie den Parameter -scan , um WPP anweisen, nach Konfigurationsdaten in der angegebenen Datei zu suchen. In diesem Beispiel befinden sich die Konfigurationsdaten in der Datei mytrace.h.

RUN_WPP=$(SOURCES) -km -scan:mytrace.h

Hinweis Sie dürfen den Schalter -km nicht in der RUN_WPP-Direktive für Benutzermodusanwendungen oder Dynamic Link Libraries (DLLs) angeben.

Eine vollständige Liste der optionalen Parameter für RUN_WPP finden Sie unter WPP-Präprozessor.