Поделиться через


Разделы справки вход и выход функции трассировки?

В следующем примере кода показано, как трассировать вход и выход из вызовов функции.

Сначала добавьте определение макроса WPP_CONTROL_GUIDS в исходный файл или файл заголовка. При определении флагов трассировки определите флаг для трассировки функций, как показано в следующем примере:

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

Затем в том же файле добавьте данные конфигурации для сообщений трассировки. Запустите данные конфигурации с помощью инструкции конфигурации begin_wpp и завершите ее инструкцией end_wpp . Затем добавьте определения для макросов, поддерживающих 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)

В исходном файле заключите код функции с помощью вызовов FuncEntry() и FuncExit().

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

Пример:

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

Если данные конфигурации помещают в файл заголовка, используйте параметр -scan , чтобы направить WPP на поиск данных конфигурации в указанном файле. В этом примере данные конфигурации приведены в файле mytrace.h.

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

Примечание Не следует указывать параметр -km в директиве RUN_WPP для приложений пользовательского режима или библиотек динамической компоновки (DLL).

Полный список необязательных параметров для RUN_WPP см. в разделе Препроцессор WPP.