Функция _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