Compartilhar via


Como fazer entrada e saída da função de rastreamento?

O código de exemplo a seguir mostra como rastrear chamadas de entrada e saída de função.

Primeiro, adicione a definição da macro WPP_CONTROL_GUIDS a um arquivo de origem ou cabeçalho. Ao definir os sinalizadores de rastreamento, defina um sinalizador para o rastreamento de função, conforme mostrado no exemplo a seguir:

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

Em seguida, no mesmo arquivo, adicione os dados de configuração para as mensagens de rastreamento. Inicie os dados de configuração com uma instrução de configuração begin_wpp e termine-os com uma instrução end_wpp . Em seguida, adicione as definições para as macros que dão suporte ao 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)

No arquivo de origem, coloque o código da função com chamadas FuncEntry() e FuncExit().

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

Por exemplo:

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

Se você colocar dados de configuração em um arquivo de cabeçalho, use o parâmetro -scan para direcionar o WPP a procurar dados de configuração no arquivo especificado. Neste exemplo, os dados de configuração estão no arquivo mytrace.h.

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

Nota Você não deve especificar a opção -km na diretiva RUN_WPP para aplicativos de modo de usuário ou DLLs (bibliotecas de vínculo dinâmico).

Para obter uma lista completa dos parâmetros opcionais para RUN_WPP, consulte Pré-processador WPP.