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


Как используются выражения Trace-If?

Чтобы помочь вам понять, как используются Trace-If выражения, мы предоставляем пример таких выражений, демонстрирующий использование и синтаксис операторов "begin_wpp config". Этот пример ссылается на функцию TRACE_RETURN, которая регистрирует событие, если выражение FAILED(HR) имеет значение true.

Если значение FAILED(HR) равно true, предположим, что имеется исходный файл с состоянием ULONG, и событие будет зарегистрировано путем вызова TRACE_RETURN(Status).

//MACRO: TRACE_RETURN
//
//begin_wpp config
//USEPREFIX (TRACE_RETURN, "%!STDPREFIX!");
//FUNC TRACE_RETURN{LEVEL=ERROR}(EXP);
//USESUFFIX (TRACE_RETURN, "Function Return=%!HRESULT!",EXP);
//end_wpp

#define WPP_LEVEL_EXP_PRE(LEVEL, HR) {if (FAILED(HR)) {
#define WPP_LEVEL_EXP_POST(LEVEL, HR) ;}}
#define WPP_LEVEL_EXP_ENABLED(LEVEL, HR) WPP_LEVEL_ENABLED(LEVEL)
#define WPP_LEVEL_EXP_LOGGER(LEVEL, HR) WPP_LEVEL_LOGGER(ERROR)

В предыдущем примере обратите внимание, что между строками конфигурации begin_wpp и end_wpp определяется TRACE_RETURN. Затем за этим определением следуют макрос PRE/POST и определения ENABLED и LOGGER.

Разделители конфигурации begin_wpp и end_wpp определяют блок конфигурации, который анализируется препроцессором. Файл, содержащий определение блока конфигурации, должен проверяться WPP. Этот файл указывается с помощью параметра -scan:file.extension.

Примечание Сведения о -scan и других параметрах RUN_WPP см. в разделе Препроцессор WPP.

В следующем списке приведены дополнительные сведения о каждой инструкции в примере блока конфигурации.

USEPREFIX
Определяет строку формата префикса, которая будет использоваться при регистрации события. В этом примере используется STDPREFIX. Сведения о значениях, доступных в STDPREFIX, см. в статье Разделы справки изменить выходные данные префикса в каждой строке трассировки?

USESUFFIX
Определяет строку формата суффикса, используемую при регистрации события.

FUNC
Определяет имя и сигнатуру функции трассировки. В этом примере функция принимает один параметр без строки форматирования.

Еще один пример Trace-If выражений см. в разделе Разделы справки включить инструкцию трассировки в макрос C/C++.