Cómo entrada y salida de la función de seguimiento?
En el código de ejemplo siguiente se muestra cómo realizar un seguimiento de las llamadas de entrada y salida de la función.
En primer lugar, agregue la definición de la macro WPP_CONTROL_GUIDS a un archivo de origen o encabezado. Al definir las marcas de seguimiento, defina una marca para el seguimiento de funciones, como se muestra en el ejemplo siguiente:
#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) )
A continuación, en el mismo archivo, agregue los datos de configuración para los mensajes de seguimiento. Inicie los datos de configuración con una instrucción config begin_wpp y finalice con una instrucción end_wpp . A continuación, agregue las definiciones de las macros que admiten 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)
En el archivo de origen, rodea el código de función con llamadas FuncEntry() y FuncExit().
#include "mytrace.h"
#include "entryexit.tmh"
void examplesub(int x)
{
FuncEntry();
// function code
FuncExit();
}
Por ejemplo:
#include "mytrace.h"
#include "entryexit.tmh"
void examplesub(int x)
{
FuncEntry();
DoTraceMessage(Noise, "Value is %d",x);
FuncExit();
}
Si coloca datos de configuración en un archivo de encabezado, use el parámetro -scan para dirigir a WPP para buscar datos de configuración en el archivo especificado. En este ejemplo, los datos de configuración están en el archivo mytrace.h.
RUN_WPP=$(SOURCES) -km -scan:mytrace.h
Nota No debe especificar el modificador -km en la directiva RUN_WPP para aplicaciones en modo de usuario o bibliotecas de vínculos dinámicos (DLL).
Para obtener una lista completa de los parámetros opcionales para RUN_WPP, vea Preprocesador de WPP.