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 建立新的分檔器,當跨執行緒步驟失敗或需要回復時,逐步執行管理員會將此欄位設定為可輕鬆地回到原始的分檔器。

CurrentCodePaths

參數在 managed 偵錯工具中,它包含目前步驟範圍中的所有程式碼路徑。 否則為 Null。

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

CurrentMethodName

參數在 managed 調試中,它包含目前的方法名稱。 否則為 Null。

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

FrameBase

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

IsUnloaded

如果已針對此物件引發 ' 卸載 ' 事件,則傳回 true, (範例:呼叫 DkmThread:: Unload) 或物件是否已關閉。 請注意,將此狀態檢查為時必須小心,而不需要同步處理,而傳回的狀態在讀取之後可能不再是正確的指示。

(繼承來源 DkmDataContainer)
ShouldCaptureReturnValue

在 managed 調試中,它會指出分檔器是否想要在逐步執行期間捕獲傳回值。 預設值為 false。

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

SourceId

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

StartingAddress

參數此步驟開始時的進程指令位址。 如果步驟是在沒有框架 (腳本僅) 管理的執行緒上執行,則這會是 Null & 。

StepKind

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

StepUnit

DkmStepUnit 描述呼叫 Step 方法時的步驟細微性。

Thread

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

UniqueId

可唯一識別此 DkmStepper 的 Guid。

方法

BeforeEnable()

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

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

CancelStepper(DkmRuntimeInstance)

允許在控制執行時間實例建立之後取消分檔器。 呼叫的執行時間實例必須符合目前的控制執行時間實例。 這通常用於跨執行緒逐步執行案例,其中原始的分檔器可能會重新開機。 逐步執行管理員將會關閉分檔器,而不會完成傳送步驟。

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

Close()

關閉分檔器物件。 當完成項完成時,元件應該會關閉此專案,例如,當步驟完成事件隱藏時,或如果分檔器無法初始化。 如果 Steppers 的執行緒結束或偵錯工具已停止,則會隱含地關閉。 如果發出不同的使用者層級執行要求,則逐步管理員將會關閉它們。

DkmStepper 物件會在其相關聯的 DkmThread 物件關閉時自動關閉。

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

DkmStepper 物件是由想要發出步驟的元件所建立。 使用者層級的 steppers 是由 AD7 所建立。 若要初始化分檔器物件,必須呼叫 Enable。 在步驟完成或中止之前,會存留分檔器物件。

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

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

DkmStepper 物件是由想要發出步驟的元件所建立。 使用者層級的 steppers 是由 AD7 所建立。 若要初始化分檔器物件,必須呼叫 Enable。 在步驟完成或中止之前,會存留分檔器物件。

Enable(Boolean)

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

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

GetControllingRuntimeInstance()

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

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

GetDataItem<T>()

取得已加入至此容器實例的 t ' 的實例。 如果此容器不包含 ' t ',則此函式會傳回 null。

(繼承來源 DkmDataContainer)
IsExceptionInFlight()

取得 DkmStepper 上的旗標,該旗標會指出執行時間監視是否認為在此步驟中目前正在執行的例外狀況。 執行時間監視器可以使用這個方法來變更逐步執行的行為。

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

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

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

當步驟在不同的執行緒上繼續時,由執行時間監視器呼叫。 逐步執行管理員將會建立新的 DkmStepper,以便在新的執行緒上使用,並起始逐步執行仲裁,以判斷哪一個執行時間應完成此步驟,如同 OnStepArbitration 一樣。 新的分檔器會使用與原始分檔器相同的步驟種類和步驟單位。 必須指定新的起始指令位址,並將其設定為分檔器的起始位址。 原始的分檔器保持運作,而且當新的分檔器完成時,逐步執行管理員將會抑制事件,並通知完成的原始分檔器。

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

OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean)

引發 ReturnValues 事件。 執行事件接收介面的元件會收到事件通知。 一旦通知所有元件之後,就會傳回控制項。

OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance)

當步驟已離開執行時間監視器瞭解的範圍,或在步驟中遇到可能轉換至另一個執行時間時,由執行時間監視器呼叫。 逐步執行管理員將會起始逐步執行仲裁,讓每個執行時間監視器有機會檢查處理程式,並判斷哪一個執行時間應完成此步驟。 執行時間會依優先權順序呼叫。 完成此程式之後,逐步管理員會在要求仲裁的監視器上呼叫 AfterSteppingArbitration,讓它可以回應新的控制監視(如果找到的話),或在找不到的情況下完成步驟。

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

OnStepComplete(DkmThread, Boolean)

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

RemoveDataItem<T>()

從此容器移除 t ' 的實例。 通常不需要呼叫這個方法,因為當物件關閉時,資料容器會自動清空。

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

將新專案放在資料容器中。

(繼承來源 DkmDataContainer)
SetExceptionInFlight(Boolean)

執行時間監視器會呼叫這個來設定或清除 DkmStepper 上的旗標,以便在執行中的例外狀況為最新的情況下,讓合作執行時間用來變更逐步執行行為。 在逐步執行期間發生例外狀況時,由執行時間監視呼叫。

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

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

StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制執行時間實例偵測到執行緒已到達其執行時間的轉換時,會呼叫 StepControlRequested。 逐步執行管理員會將呼叫轉送至目前的控制執行時間實例。 如果目前的控制執行時間實例可以停止逐步執行,則應該將其授與 true。 在要求的執行時間呼叫 DkmStepper. TakeStepControl 之前,不會指定實際的控制權。 這兩個部分的進程可讓呼叫端同時要求控制多個 steppers。

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

TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance)

當非控制執行時間實例偵測到執行緒已到達其執行時間的轉換時,會呼叫 TakeStepControl。 逐步執行管理員會將呼叫轉送至目前的控制執行時間實例。 要求控制項的執行時間實例應先對其想要控制的所有 steppers 呼叫 StepControlRequested。 如果它們全部都設為 true,則執行時間實例應該在其所控制的每個分檔器上呼叫這個方法。

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

明確介面實作

IDisposable.Dispose()

即將加入。

適用於