DkmStepper 類別

定義

DkmStepper 代表執行線程的要求。 它有助於參與逐步執行的各種運行時間偵錯監視器之間的共享物件存留期。

public ref class DkmStepper : Microsoft::VisualStudio::Debugger::DkmDataContainer, IDisposable
[System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")]
public class DkmStepper : Microsoft.VisualStudio.Debugger.DkmDataContainer, IDisposable
[<System.Runtime.InteropServices.Guid("2aae9764-33a3-8fc7-22ff-e27c9de91bda")>]
type DkmStepper = class
    inherit DkmDataContainer
    interface IDisposable
Public Class DkmStepper
Inherits DkmDataContainer
Implements IDisposable
繼承
繼承
屬性
實作

屬性

CodePath

[選擇性]如果 StepKind 是 StepIntoSpecific,則指定我們要逐步執行的呼叫。 否則為 NULL。

CrossThreadParent

[選擇性]如果使用 OnCrossThreadStepArbitration 建立新的步驟程式,則逐步執行管理員會設定此字段,以在跨線程步驟失敗或需要後援時,輕鬆回到原始逐步執行程式。 已取代。 請改用 GetCrossThreadParent。

CurrentCodePaths

[選擇性]在 Managed 偵錯中,它包含目前步驟範圍中的所有程式碼路徑。 否則為 NULL。

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

CurrentMethodName

[選擇性]在 Managed 偵錯中,它包含目前的方法名稱。 否則為 NULL。

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

FrameBase

步驟開頭第一個畫面的框架基底。 如果未指定 StartingAddress,此值將會MAXUINT64。

IsUnloaded

如果已針對這個對象引發 'unloaded' 事件, (範例:DkmThread::Unload 呼叫) 或對象已關閉,則傳回 true。 請注意,檢查此狀態時,請務必小心,而不需同步處理,傳回的狀態在讀取之後可能無法再精確指示。

(繼承來源 DkmDataContainer)
ShouldCaptureReturnValue

在 Managed 偵錯中,指出步驟程式是否要在逐步執行期間擷取傳回值。 默認為 false。

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

SourceId

識別物件的來源。 SourceId 可用來在多個元件可能建立類別實例的案例中啟用篩選。 例如,來源標識碼可用來判斷斷點是否來自AD7 AL (例如:用戶斷點或其他在SDM層級可見的斷點) ,而不是另一個元件所建立的斷點 (,例如用於逐步執行) 的內部斷點。

StartingAddress

[選擇性]此步驟啟動時程式的指示位址。 如果步驟源自沒有框架的線程, (腳本 & 僅限受控) ,則這會是 NULL。

StepKind

DkmStepKind 描述如何在呼叫 Step 方法時逐步執行線程。

StepUnit

DkmStepUnit 描述呼叫 Step 方法時步驟的數據粒度。

Thread

DkmThread 代表在目標進程中執行的線程。

UniqueId

Guid 可唯一識別此 DkmStepper。

方法

BeforeEnable()

在步驟作業實際開始之前,由停止事件管理員呼叫。停止事件管理員會通知所有運行時間實例,以便在停止事件管理員開始封鎖函式評估之前,先設定任何必要的狀態。

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

CancelStepper(DkmRuntimeInstance)

允許由控制運行時間實例建立之後取消逐步執行程式。 呼叫運行時間實例必須符合目前的控制運行時間實例。 這通常用於可能重新啟用原始逐步執行程式之跨線程逐步執行案例。 逐步執行管理員將會關閉逐步執行程式,而不會傳送步驟完成。

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

Close()

關閉 Stepper 物件。 當步驟程式完成時,應該由元件關閉此動作,例如當隱藏步驟完成事件時,或如果步驟程式無法初始化,則為 。 如果線程結束時,或調試程式停止,則會隱含地關閉階梯。 如果發出不同的用戶層級執行要求,則逐步執行管理員將會關閉它們。

當相關聯的 DkmThread 物件關閉時,會自動關閉 DkmStepper 物件。

Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, Boolean, ReadOnlyCollection<DkmSteppingCodePath>, String, DkmDataItem)

DkmStepper 物件是由想要發出步驟的元件所建立。 用戶層級的階梯是由AD7-AL所建立。 若要初始化 Stepper 對象,必須呼叫 Enable。 Stepper 物件會即時執行,直到步驟完成或中止為止。

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

Create(DkmThread, DkmInstructionAddress, UInt64, DkmStepKind, DkmStepUnit, Guid, DkmSteppingCodePath, DkmStepper, DkmDataItem)

DkmStepper 物件是由想要發出步驟的元件所建立。 用戶層級的階梯是由AD7-AL所建立。 若要初始化 Stepper 對象,必須呼叫 Enable。 Stepper 物件會即時執行,直到步驟完成或中止為止。

Enable(Boolean)

用來初始化 Stepper 物件,以便在下次繼續執行時執行步驟。 這個方法是由逐步執行管理員實作,方法是尋找適當的運行時間偵錯監視器,並要求此運行時間偵錯監視器設定步驟。 這個方法應該只針對指定的 Stepper 物件呼叫一次。

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

GetControllingRuntimeInstance()

傳回目前控制此 DkmStepper 的運行時間實例。

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

GetCrossThreadParent()

使用 而非 CrossThreadParent。

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

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引進。

GetDataItem<T>()

取得已新增至這個容器實例的 『T』 實例。 如果此容器不包含 『T』,此函式會傳回 null。

(繼承來源 DkmDataContainer)
IsExceptionInFlight()

取得 DkmStepper 上的旗標,指出運行時間監視器是否認為此步驟期間目前處於正式發行前小眾測試狀態。 這可由運行時間監視器用來變更逐步執行的行為。

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

此 API 是在 Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1) 中引進。

OnCrossThreadStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance, DkmThread, DkmInstructionAddress, DkmStepper)

當步驟在不同的線程上繼續時,由運行時間監視器呼叫。 逐步執行管理員會建立新的 DkmStepper,以用於新的線程,並起始逐步仲裁,以判斷哪個運行時間應該完成步驟,就像 OnStepArbitration 一樣。 新的逐步執行程式會使用與原始逐步執行程式相同的步驟種類和步驟單位。 必須指定新的起始指令位址,並設定為逐步執行者的起始位址。 原始逐步執行程式會保持運作,而當新的步驟程式完成時,逐步執行管理員將會隱藏事件,並通知原始的逐步執行程式完成。

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

OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean)

引發 ReturnValues 事件。 實作事件接收介面的元件將會收到事件通知。 一旦所有元件都收到通知,控件就會傳回。

OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance)

當步驟離開運行時間監視器瞭解的內容,或在步驟期間遇到可能轉換至另一個運行時間時,由運行時間監視器呼叫。 逐步執行管理員會起始逐步仲裁,讓每個運行時間監視器有機會檢查進程,並判斷哪個運行時間應該完成步驟。 運行時間會依優先順序呼叫。 完成此程序之後,逐步執行管理員會在要求的仲裁監視器上呼叫 AfterSteppingArbitration,以便在找到仲裁時回應新的控制監視器,或在找不到時完成步驟。

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

OnStepComplete(DkmThread, Boolean)

引發 StepComplete 事件。 實作事件接收介面的元件將會收到事件通知。 這個方法會加入事件佇列,而控件會立即返回呼叫端。

RemoveDataItem<T>()

從這個容器中移除 『T』 的實例。 通常不需要呼叫這個方法,因為關閉物件時,數據容器會自動清空。

(繼承來源 DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

將新專案放在數據容器中。

(繼承來源 DkmDataContainer)
SetExceptionInFlight(Boolean)

運行時間監視器會呼叫此專案,以設定或清除 DkmStepper 上的旗標,讓運行時間在正式發行前小眾測試版時變更逐步執行的行為。 當逐步執行時遇到例外狀況時,由運行時間監視呼叫。

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

此 API 是在 Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1) 中引進。

StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制運行時間實例偵測到線程已叫用轉換到其運行時間時,就會呼叫 StepControlRequested。 逐步執行管理員會將呼叫轉送至目前的控制運行時間實例。 如果目前的控制運行時間實例可以停止逐步執行,它應該將 Granted 設定為 true。 在要求運行時間呼叫 DkmStepper.TakeStepControl 之前,不會提供實際控件。 這兩個部分程式可讓呼叫端同時要求控制多個階梯。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制運行時間實例偵測到線程已到達其運行時間的轉換時,就會呼叫TakeStepControl。 逐步執行管理員會將呼叫轉送至目前的控制運行時間實例。 要求控件的運行時間實例應該先在想要控制的所有階梯上呼叫 StepControlRequested。 如果它們全都設定為 true,運行時間實例應該在每個步驟程式上呼叫此方法,以控制它。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

明確介面實作

IDisposable.Dispose()

即將加入。

適用於