Condividi tramite


Ricerca per categorie voce e uscita della funzione di traccia?

Il codice di esempio seguente illustra come tracciare le chiamate di ingresso e uscita della funzione.

Aggiungere prima di tutto la definizione della macro WPP_CONTROL_GUIDS a un file di origine o di intestazione. Quando si definiscono i flag di traccia, definire un flag per la traccia delle funzioni, come illustrato nell'esempio seguente:

#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) )

Quindi, nello stesso file, aggiungere i dati di configurazione per i messaggi di traccia. Avviare i dati di configurazione con un'istruzione config begin_wpp e terminarla con un'istruzione end_wpp . Aggiungere quindi le definizioni per le macro che supportano FuncTrace.

// 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)

Nel file di origine racchiudere il codice della funzione con chiamate FuncEntry() e FuncExit().

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

Ad esempio:

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

Se si inserisce i dati di configurazione in un file di intestazione, usare il parametro -scan per indirizzare WPP alla ricerca dei dati di configurazione nel file specificato. In questo esempio i dati di configurazione si trovano nel file mytrace.h.

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

Nota Non è necessario specificare l'opzione -km nella direttiva RUN_WPP per le applicazioni in modalità utente o le librerie a collegamento dinamico (DLL).

Per un elenco completo dei parametri facoltativi per RUN_WPP, vedere Il preprocessore WPP.