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


DkmStackWalkFrame Класс

Определение

DkmStackWalkFrame представляет кадр в стеке вызовов, который был выполнен, но не был отформатирован или отфильтрован. Форматированные кадры представляются DkmStackFrame.

Производные классы: DkmStackFrame

public ref class DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmStackWalkFrame
[Windows::Foundation::Metadata::WebHostHidden]
class DkmStackWalkFrame
[System.Runtime.InteropServices.Guid("48b55030-ecac-2387-4e63-bfdc3c172598")]
public class DkmStackWalkFrame
[<System.Runtime.InteropServices.Guid("48b55030-ecac-2387-4e63-bfdc3c172598")>]
type DkmStackWalkFrame = class
Public Class DkmStackWalkFrame
Наследование
DkmStackWalkFrame
Производный
Атрибуты

Свойства

AnnotatedModule

[Необязательно] Если у нас есть кадр с заметками, указывает необязательный экземпляр модуля для связи с этим кадром. Если они есть, пользователь сможет загрузить двоичные файлы или символы для этого модуля, щелкнув правой кнопкой мыши этот кадр в окне стека вызовов. Этот параметр имеет значение NULL для кадров без аннотированных.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Annotations

[Необязательно] Коллекция заметок кадра стека только для чтения. Они определяются с помощью средства очистки и зависят от этого средства очистки. Примером использования является передача данных встроенного кадра из встроенного фильтра стека в форматировщик.

AsyncContext

[Необязательно] Необязательный контекст для обхода асинхронных возвращаемых стеков и стеков создания задач.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

BasicSymbolInfo

[Необязательно] Содержит основные сведения о DkmInstructionSymbol, соответствующему элементу InstructionAddress кадра. Для собственных кадров это будет вычисляться StackProvider перед передачей кадра в фильтр стека.

Значение всегда будет иметь значение NULL для DkmStackFrame.

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

Connection

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

Data

[Необязательно] Необязательный объект для присоединения к DkmStackWalkFrame, позволяющий компонентам связывать дополнительные частные данные с кадром.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Description

[Необязательно] Описание кадра, который будет отображаться в окне стека вызовов. Это должно быть указано для кадров с заметками.

Flags

Помечает свойства DkmStackWalkFrame.

FrameBase

Указатель базового стека кадра. Этот параметр используется SDM для сортировки кадра, а слиянием стека — для оценки хода выполнения, поэтому это значение требуется даже для кадров с заметками. Это значение должно быть недопустимым только в случае повреждения стека отладчика.

FrameSize

Число байтов стека, потребляемых этим кадром. Это значение будет равно нулю для аннотированных кадров или , если значение неизвестно.

InstructionAddress

[Необязательно] Инструкция этого кадра. Этот параметр можно опустить для кадров с заметками.

ModuleInstance

[Необязательно] Модуль, содержащий этот адрес. Адреса без модуля не могут содержать символы (даже для пользовательских адресов). Адреса СРЕДЫ CLR всегда будут иметь модуль. В собственных адресах не будет модуля, если ЦП перешел на недопустимый адрес (например, NULL) или если ЦП выполняет динамически создаваемый код.

Priority

Приоритет кадра шага стека. Обычно используется для аннотированных кадров, в которых обнаружена проблема.

Этот API появился в Visual Studio 17 с обновлением 5 (DkmApiVersion.VS17Update5).

Process

DkmProcess представляет отлаживаемый целевой процесс. Отладчик отлаживать процессы, поэтому это базовая единица отладки. DkmProcess может представлять системный или виртуальный процесс, например минидампы.

Registers

[Необязательно] Регистры пошагового кадра. Они должны быть предоставлены для кадров без аннотированных.

RuntimeInstance

[Необязательно] Класс DkmRuntimeInstance представляет среду выполнения, которая загружается в DkmProcess и содержит отлаживаемый код.

Thread

Поток, в который включен этот кадр стека.

UniqueId

Уникальный идентификатор DkmStackWalkFrame. В сценариях удаленной отладки это может быть GUID_NULL/Guid.Empty, если кадр был маршалирован из более старой интегрированной среды разработки или удаленного отладчика.

Этот API появился в Visual Studio 16 с обновлением 10 (DkmApiVersion.VS16Update10).

Методы

CanSetNextStatement(DkmInstructionAddress)

CanSetNextStatement определяет, можно ли переместить IP-адрес кадра стека. Рамка стека всегда является конечной рамкой стека в определенном потоке. Этот API можно реализовать только в процессе обработчика. Параметр Result out должен быть S_OK или значение сбоя HRESULT, которое пользовательский интерфейс может сопоставить с сообщением об ошибке.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

ComputeUserStatus(DkmInspectionSession, Boolean)

Определяет, является ли фрейм пользовательским кодом.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>)

Create новый экземпляр объекта DkmStackWalkFrame.

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData)

Create новый экземпляр объекта DkmStackWalkFrame.

Этот API появился в Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData, DkmBasicInstructionSymbolInfo)

Create новый экземпляр объекта DkmStackWalkFrame.

Этот API появился в Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview).

Create(DkmThread, DkmInstructionAddress, UInt64, UInt32, DkmStackWalkFrameFlags, String, DkmFrameRegisters, ReadOnlyCollection<DkmStackWalkFrameAnnotation>, DkmModuleInstance, DkmAsyncStackWalkContext, DkmStackWalkFrameData, DkmBasicInstructionSymbolInfo, DkmStackWalkFramePriority)

Create новый экземпляр объекта DkmStackWalkFrame.

Этот API появился в Visual Studio 17 с обновлением 5 (DkmApiVersion.VS17Update5).

Format(DkmInspectionSession, DkmFrameFormatOptions)

Отформатируйте DkmStackWalkFrame в DkmStackFrame. Форматирование кадра — это один из этапов действия поставщика стека во время getNextFrames. Этот метод можно использовать для форматирования кадра иначе, чем изначально выполнен поставщиком стека в GetNextFrames.

Ограничение расположения: API должен вызываться из компонента IDE (уровень > компонента 100 000).

GetClrGenericParameters()

Возвращает универсальные параметры для текущего кадра стека в виде списка полных имен сборок.

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

GetClrGenericParameters(DkmWorkList, DkmCompletionRoutine<DkmGetClrGenericParametersAsyncResult>)

Возвращает универсальные параметры для текущего кадра стека в виде списка полных имен сборок.

Этот метод добавляет новый рабочий элемент в указанный рабочий список и возвращается после добавления рабочего элемента. Фактическая обработка рабочего элемента является асинхронной. Вызывающий объект получит уведомление о том, что запрос завершен в рамках процедуры завершения.

Этот API появился в Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

GetInspectionInterface(DkmInspectionSession, Guid)

GetInspectionInterface используется для получения ICorDebugFrame или других интерфейсов, относящихся к реализации, которые компонент может использовать для глубокой проверки кадра стека.

Возвращенный интерфейс может использоваться ТОЛЬКО для проверки целевого процесса и никогда не должен использоваться для управления выполнением (без пошагового выполнения, точек останова, без продолжения и т. д.). Это не поддерживается и приведет к неопределенному поведению. ПРИМЕЧАНИЕ. Использовать этот метод из управляемого кода не рекомендуется из соображений производительности. Маршалирование DkmStackWalkFrame между собственным и управляемым кодом является дорогостоящим. Вместо этого используйте DkmRuntimeInstance.GetFrameInspectionInterface.

Ограничение расположения. Этот API должен вызываться из того же процесса, в котором целевая среда выполнения реализует обход стека или где загружаются символы. Для управляемой отладки это означает, что при отладке 64-разрядных или удаленных процессов этот API должен вызываться из компонента монитора отладки.

GetInstructionSymbol()

Возвращает DkmInstructionSymbol для кадра стека. Если фрейм стека не имеет адреса инструкции (кадр с заметками) или адрес инструкции не имеет связанного DkmModule, getInstructionSymbol вернет null (S_FALSE в машинном коде).

GetProperty(ICorDebugValue, String)

Оценивает свойство для заданного значения ICorDebugValue. Тип значения должен быть загружен DkmClrAppDomain DkmStackWalkFrame, для которой вызывается этот $Name$.

Ограничение расположения. Это должно быть на удаленной стороне, так как мы передаём ICorDebugHandleValue.

Этот API появился в Visual Studio 15 с обновлением 3 (DkmApiVersion.VS15Update3).

GetUnwindAddress(DkmInstructionAddress)

Возвращает адрес, представляющий расположение, если исключение должно было быть перехвачено в этот кадр.

InterceptCurrentException(DkmExceptionInterceptActionFlags, UInt64)

InterceptCurrentException используется для очистки этого кадра, как если бы в этом кадре был обработчик исключений.

OnSetNextStatementCompleted(DkmInstructionAddress)

OnSetNextStatementCompleted — это метод общего назначения, позволяющий компонентам очищать состояние после завершения следующей инструкции set. DkmStackWalkFrame будет кадром перед вызовом SetNextStatement.

Ограничение расположения. Как правило, этот API следует вызывать только из клиентских компонентов. Однако компонент на стороне монитора безопасно вызывает этот API, если оператор set next вызывается из обработчика событий.

SetNextStatement(DkmInstructionAddress)

SetNextStatement перемещает IP-адрес кадра стека. Рамка стека всегда является конечной рамкой стека в определенном потоке.

Применяется к