Функция _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
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по