DkmStackWalkContext Класс

Определение

DkmStackWalkContext позволяет различным компонентам, которые просматривают, фильтруют или проверяют стеки вызовов, для хранения частных данных, связанных с этим стеком вызовов.

public ref class DkmStackWalkContext : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("33ebb282-734b-c2f3-66cd-c42eb8a3d490")]
public class DkmStackWalkContext : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("33ebb282-734b-c2f3-66cd-c42eb8a3d490")>]
type DkmStackWalkContext = class
    inherit DkmDataContainer
    interface IDisposable
Public Class DkmStackWalkContext
Inherits DkmDataContainer
Implements IDisposable
Наследование
DkmStackWalkContext
Наследование
DkmStackWalkContext
Атрибуты
Реализации

Свойства

Flags

Флаги для управления кадрами, возвращаемыми во время стека.

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

IsUnloaded

Возвращает значение true, если для этого объекта было инициировано событие "unloaded" (например, вызывается DkmThread::Unload) или если объект был закрыт. Обратите внимание, что при проверке этого состояния необходимо соблюдать осторожность, так как без синхронизации возвращаемое состояние может быть не точным после чтения инструкции.

(Унаследовано от DkmDataContainer)
Process

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

Thread

DkmThread представляет поток, выполняющийся в целевом процессе.

ThreadContext

[Необязательно] Начальный контекст Win32, используемый при выполнении шага по стеку. Обычно это значение равно null, но его можно задать для просмотра другого стека вызовов (например, .cxr).

TopStackPointer

Указатель стека для верхней рамки стека.

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

UniqueId

Guid, который однозначно идентифицирует DkmStackWalkContext.

Методы

Close()

Закрывает экземпляр объекта DkmStackWalkContext. Это позволит освободить все ресурсы, связанные с этим объектом, во всех компонентах. Сюда входят ресурсы в пределах компьютеров или управляемых или собственных границ маршалинга.

Объекты DkmStackWalkContext автоматически закрываются при закрытии связанного с ними объекта DkmThread.

Create(DkmThread, ReadOnlyCollection<Byte>, DkmDataItem)

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

Create(DkmThread, ReadOnlyCollection<Byte>, UInt64, DkmDataItem)

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

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

Create(DkmThread, ReadOnlyCollection<Byte>, UInt64, DkmStackWalkContextFlags, DkmDataItem)

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

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

FindSymbolStackWalkContext(Guid)

Найдите элемент DkmSymbolStackWalkContext в этом DkmStackWalkContext. Если нет элемента с заданным входным ключом, findSymbolStackWalkContext завершится ошибкой.

GetDataItem<T>()

Возвращает экземпляр "T", добавленный в этот экземпляр контейнера. Если этот контейнер не содержит "T", эта функция возвращает значение NULL.

(Унаследовано от DkmDataContainer)
HeuristicWalkFrames(DkmFrameRegisters, UInt32, UInt64, DkmFrameRegisters, Boolean)

Попробуйте выполнить обход области стека с помощью алгоритма эвристического стека. Используется в x86, если символы недоступны. Он не реализован на других платформах, так как PDATA позволяет ходить по всем кадрам.

HeuristicWalkFrames(DkmWorkList, DkmFrameRegisters, UInt32, UInt64, DkmCompletionRoutine<DkmHeuristicWalkFramesAsyncResult>)

Попробуйте выполнить обход области стека с помощью алгоритма эвристического стека. Используется в x86, если символы недоступны. Он не реализован на других платформах, так как PDATA позволяет ходить по всем кадрам.

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

RemoveDataItem<T>()

Удалите экземпляр T из этого контейнера. Обычно не требуется вызывать этот метод, так как контейнер данных автоматически очищается при закрытии объекта.

(Унаследовано от DkmDataContainer)
RuntimeWalkNextFrames(DkmWorkList, UInt32, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAsyncResult>)

Попробуйте пройти по стеку без использования символов. Это вызовет различные компоненты, которые знают, как выполнять обход частей стека (например, кадры СРЕДЫ CLR будут выполняться монитором отладки СРЕДЫ CLR). "Неразрешенный" кадр будет оставлен для частей стека, которые невозможно пройти без сведений, хранящихся в файле символов. Эти "неразрешенные" кадры не имеют ИнструкцииAddress или Description.

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

RuntimeWalkNextFrames(UInt32, Boolean)

Попробуйте пройти по стеку без использования символов. Это вызовет различные компоненты, которые знают, как выполнять обход частей стека (например, кадры СРЕДЫ CLR будут выполняться монитором отладки СРЕДЫ CLR). "Неразрешенный" кадр будет оставлен для частей стека, которые невозможно пройти без сведений, хранящихся в файле символов. Эти "неразрешенные" кадры не имеют ИнструкцииAddress или Description.

RuntimeWalkNextFramesAndCheckCache(DkmWorkList, UInt32, UInt32, DkmStackHash, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCacheAsyncResult>)

Не рекомендуется. Не используйте этот метод, он возвращает устаревшие хэш-значения; используйте вместо него IDkmMergedMonitorStackWalk164::RuntimeWalkNextFramesAndCheckCache164. Версия RuntimeWalkNextFrames(), которая также проверяет, действительна ли кэшированная копия стека вызовов.

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

RuntimeWalkNextFramesAndCheckCache(UInt32, UInt32, DkmStackHash, Boolean, DkmStackHash, DkmStackWalkContext, Boolean)

Не рекомендуется. Не используйте этот метод, он возвращает устаревшие хэш-значения; используйте вместо него IDkmMergedMonitorStackWalk164::RuntimeWalkNextFramesAndCheckCache164. Версия RuntimeWalkNextFrames(), которая также проверяет, действительна ли кэшированная копия стека вызовов.

RuntimeWalkNextFramesAndCheckCache164(DkmWorkList, UInt32, UInt32, DkmStackHash164, DkmCompletionRoutine<DkmRuntimeWalkNextFramesAndCheckCache164AsyncResult>)

Версия RuntimeWalkNextFrames(), которая также проверяет, действительна ли кэшированная копия стека вызовов.

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

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

RuntimeWalkNextFramesAndCheckCache164(UInt32, UInt32, DkmStackHash164, Boolean, DkmStackHash164, DkmStackWalkContext, Boolean)

Версия RuntimeWalkNextFrames(), которая также проверяет, действительна ли кэшированная копия стека вызовов.

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

SetDataItem<T>(DkmDataCreationDisposition, T)

Поместите новый элемент в контейнер данных.

(Унаследовано от DkmDataContainer)

Явные реализации интерфейса

IDisposable.Dispose()

DkmStackWalkContext позволяет различным компонентам, которые просматривают, фильтруют или проверяют стеки вызовов, для хранения частных данных, связанных с этим стеком вызовов.

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