Функция _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), чтобы перед каждой module!functionname строкой отображались регистр EBP и указатель стека ввода (ESP).

Комментарии

Структура _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

См. также раздел