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


Функция _EFN_StackTrace

Предоставляет текстовое представление трассировки управляемого стека и массив записей CONTEXT, по одной для каждого перехода между неуправляемым и управляемым кодом.

Синтаксис

HRESULT CALLBACK _EFN_StackTrace(
    [in]  PDEBUG_CLIENT  Client,
    [out] WCHAR          wszTextOut[],
    [out] size_t         *puiTextLength,
    [out] LPVOID         pTransitionContexts,
    [out] size_t         *puiTransitionContextCount,
    [in]  size_t         uiSizeOfContext,
    [in]  DWORD          Flags
);

Параметры

Client [in] Отлаживаемый клиент.

wszTextOut [out] Текстовое представление трассировки стека.

puiTextLength [out] Указатель на число символов в wszTextOut.

pTransitionContexts [out] Массив контекстов перехода.

puiTransitionContextCount [out] Указатель на число контекстов перехода в массиве.

uiSizeOfContext [in] Размер структуры контекста.

Flags [in] Установите значение 0 или SOS_STACKTRACE_SHOWADDRESSES (0x01), чтобы отобразить регистр EBP и указатель стека (ESP) перед каждой module!functionname строкой.

Замечания

Структура _EFN_StackTrace может вызываться из программного интерфейса WinDbg. Параметры используются следующим образом:

  • Если wszTextOut значение равно null и puiTextLength не равно null, функция возвращает длину строки в puiTextLength.

  • Если wszTextOut значение не равно NULL, функция сохраняет текст в wszTextOut расположении, указанному puiTextLength. Он возвращается успешно, если в буфере было достаточно места или возвращается E_OUTOFMEMORY, если буфер был недостаточно длинным.

  • Переходная часть функции игнорируется, если pTransitionContexts и puiTransitionContextCount имеет значение NULL. В этом случае функция предоставляет вызывающим абонентам текстовые выходные данные только имен функций.

  • Если pTransitionContexts значение равно null и puiTransitionContextCount не равно null, функция возвращает необходимое количество записей контекста в puiTransitionContextCount.

  • Если pTransitionContexts значение не равно NULL, функция обрабатывает ее как массив структур длины puiTransitionContextCount. Размер структуры присваивается uiSizeOfContextи должен быть размером SimpleContext или CONTEXT архитектуры.

  • wszTextOut записывается в следующем формате:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Если смещение в шестнадцатеричном виде 0x0, смещение не записывается.

  • Если в данный момент в потоке нет управляемого кода, функция возвращает SOS_E_NOMANAGEDCODE.

  • Параметр Flags равен 0 или SOS_STACKTRACE_SHOWADDRESSES, чтобы увидеть EBP и ESP перед каждой module!functionname строкой. По умолчанию это значение равно 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Требования

Платформы: см. раздел Требования к системе.

Заголовок: SOS_Stacktrace.h

версии платформа .NET Framework: Доступно с версии 2.0

См. также