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

[選擇性]包含對應至框架 InstructionAddress 之 DkmInstructionSymbol 的基本資訊。 針對原生畫面,這會先由 StackProvider 計算,再將框架傳遞至堆棧篩選。

DkmStackFrame 一律會是 Null。

此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。

Connection

這代表監視器與 IDE 之間的連線。 如果監視器在與 IDE 相同的進程中執行,則它可以是本機連線,也可以是遠端連線。 在監視程式中,只有一個連線。

Data

[選擇性]要附加至 DkmStackWalkFrame 的選擇性物件,讓元件能夠將其他私人數據與框架產生關聯。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引進。

Description

[選擇性]將在呼叫堆疊視窗中顯示之框架的描述。 這應該提供給標註的畫面格。

Flags

旗標 DkmStackWalkFrame 的屬性。

FrameBase

框架的基底堆疊指標。 SDM 會使用此專案來排序框架,而且堆疊合併會用來評估逐步解說進度,因此即使是標註的畫面格也需要這個值。 只有在偵錯項目的堆疊損毀時,這個值才應該無效。

FrameSize

此框架所取用堆疊的位元元數目。 註出畫面格的這個值將會是零,如果值未知, 則為 。

InstructionAddress

[選擇性]這個框架的指令。 這可以省略批注的畫面格。

ModuleInstance

[選擇性]包含此位址的模組。 沒有模組的位址不能有符號 (,甚至是自定義位址) 。 CLR 位址一律會有模組。 如果 CPU 跳到無效的位址 (例如 NULL) ,或者 CPU 正在動態發出程式代碼,則原生位址不會有模組。

Priority

堆疊逐步解說框架的優先順序。 這通常用於偵測到問題的批注畫面。

此 API 是在 Visual Studio 17 Update 5 (DkmApiVersion.VS17Update5) 引進。

Process

DkmProcess 代表正在偵錯的目標進程。 調試程式會偵錯進程,因此這是偵錯的基本單元。 DkmProcess 可以代表系統進程或虛擬進程,例如minidumps。

Registers

[選擇性]已逐步解說框架的緩存器。 這些應該提供給未標註的畫面格。

RuntimeInstance

[選擇性]DkmRuntimeInstance 類別代表載入 DkmProcess 並包含要偵錯之程式碼的執行環境。

Thread

這個堆疊框架所在的線程。

UniqueId

DkmStackWalkFrame 的唯一標識符。 在遠端偵錯案例中,如果框架是從較舊的 IDE/遠端調試程式封送處理,則可能GUID_NULL/Guid.Empty。

此 API 是在 Visual Studio 16 Update 10 (DkmApiVersion.VS16Update10) 引進。

方法

CanSetNextStatement(DkmInstructionAddress)

CanSetNextStatement 會判斷是否可以移動堆疊框架的 IP。 堆疊框架一律是特定線程上的分葉堆疊框架。 此 API 只能在引擎進程內實作。 Result out 參數應該S_OK或 UI 可以對應至錯誤訊息的失敗 HRESULT 值。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

ComputeUserStatus(DkmInspectionSession, Boolean)

判斷框架是否為使用者程序代碼。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 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 Update 5 (DkmApiVersion.VS17Update5) 引進。

Format(DkmInspectionSession, DkmFrameFormatOptions)

將 DkmStackWalkFrame 格式化為 DkmStackFrame。 格式化框架是堆疊提供者在 GetNextFrames 期間執行的一個步驟。 這個方法可以用來以不同於 GetNextFrames 中堆疊提供者原本所執行的方式來格式化框架。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 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 或其他實作特定介面,元件可用來深入檢查堆疊框架。

傳回的介面只能用來檢查目標進程,而且絕對不應該用來控制執行, (沒有逐步執行、沒有斷點、沒有繼續等等) 。 不支援這麼做,而且會導致未定義的行為。 注意:基於效能考慮,不建議從 Managed 程式代碼使用此方法。 原生和 Managed 程式代碼之間的 DkmStackWalkFrame 封送處理成本很高。 請改用 DkmRuntimeInstance.GetFrameInspectionInterface。

位置條件約束:必須從目標運行時間實作堆疊逐步解說的相同進程或載入符號的相同進程呼叫此 API。 針對 Managed 偵錯,這表示偵錯 64 位或遠端進程時,必須從偵錯監視元件呼叫此 API。

GetInstructionSymbol()

傳回堆疊框架的 DkmInstructionSymbol。 如果堆疊框架沒有指令位址 (批注框架) 或指令位址沒有相關聯的 DkmModule,則 GetInstructionSymbol 會在機器碼) 中傳回 null (S_FALSE。

GetProperty(ICorDebugValue, String)

評估指定 ICorDebugValue 上的屬性。 值的類型必須由呼叫這個 $Name$ 之 DkmStackWalkFrame 的 DkmClrAppDomain 載入。

位置條件約束:這必須位於遠端,因為我們正在傳遞 ICorDebugHandleValue。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 引進。

GetUnwindAddress(DkmInstructionAddress)

傳回位址,如果例外狀況要攔截到此框架,則傳回代表位置的位址。

InterceptCurrentException(DkmExceptionInterceptActionFlags, UInt64)

InterceptCurrentException 可用來回溯到此畫面,就像該框架有例外狀況處理程序一樣。

OnSetNextStatementCompleted(DkmInstructionAddress)

OnSetNextStatementCompleted 是一種一般用途的方法,可讓元件在設定下一個語句完成之後清除狀態。 DkmStackWalkFrame 將會是 SetNextStatement 呼叫之前的框架。

位置條件約束:此 API 通常只能從用戶端元件呼叫。 不過,如果從事件處理程式呼叫 set next 語句,則監視端元件可以安全地呼叫此 API。

SetNextStatement(DkmInstructionAddress)

SetNextStatement 會移動堆疊框架的IP。 堆疊框架一律是特定線程上的分葉堆疊框架。

適用於