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

OptionalStepKind が StepIntoSpecific の場合、ステップインする呼び出しを指定します。 それ以外の場合は NULL になります。

CrossThreadParent

OptionalOnクロススレッド Steparbitを使用して新しいステッパが作成された場合、このフィールドは、スレッド間のステップが失敗した場合、またはフォールバックが必要な場合に、元のステッパに簡単に戻ることができるように、ステップマネージャーによって設定されます。

CurrentCodePaths

Optionalマネージデバッグでは、現在のステップ範囲内のすべてのコードパスが含まれます。 それ以外の場合は NULL になります。

この API は、Visual Studio 12 RTM (DkmApiVersion. VS12RTM) で導入されました。

CurrentMethodName

Optionalマネージデバッグでは、現在のメソッド名が含まれています。 それ以外の場合は NULL になります。

この API は、Visual Studio 12 RTM (DkmApiVersion. VS12RTM) で導入されました。

FrameBase

ステップの先頭にある最初のフレームのフレームベース。 StartingAddress が指定されていない場合、この値は MAXUINT64 になります。

IsUnloaded

このオブジェクトに対して ' Unload ' イベントが発生した場合 (例: DkmThread:: Unload が呼び出された場合)、またはオブジェクトが閉じられている場合は、true を返します。 同期せずに、この状態を確認するときは注意が必要であることに注意してください。返されたステータスが読み取られた後の命令に正確ではなくなる可能性があります。

(継承元 DkmDataContainer)
ShouldCaptureReturnValue

マネージデバッグでは、ステップ実行中にステッパが戻り値をキャプチャする必要があるかどうかを示します。 既定値は false です。

この API は、Visual Studio 12 RTM (DkmApiVersion. VS12RTM) で導入されました。

SourceId

オブジェクトのソースを識別します。 SourceIds は、複数のコンポーネントがクラスのインスタンスを作成している場合に、フィルター処理を有効にするために使用されます。 たとえば、ソース id を使用すると、ブレークポイントが、別のコンポーネントによって作成される可能性がある (たとえば、ステップ実行に使用される内部ブレークポイント) のではなく、AD7 AL からのブレークポイント (例: ユーザーブレークポイント、または SDM レベルで表示されるその他のブレークポイント) であるかどうかを判断できます

StartingAddress

Optionalこのステップが開始された時点でのプロセスの命令アドレス。 フレームがないスレッドでステップが発生した場合、これは NULL になります (スクリプトによる & マネージのみ)。

StepKind

DkmStepKind ステップメソッドが呼び出されたときにスレッドをステップ実行する方法について説明します。

StepUnit

DkmStepUnit は、ステップメソッドが呼び出されたときのステップの粒度を表します。

Thread

DkmThread は、ターゲットプロセスで実行されているスレッドを表します。

UniqueId

この DkmStepper を一意に識別する Guid。

メソッド

BeforeEnable()

停止イベントマネージャーによって呼び出され、停止イベントマネージャーが停止している関数評価を開始する前に必要な状態を設定できるように、すべてのランタイムインスタンスに通知します。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

CancelStepper(DkmRuntimeInstance)

制御ランタイムインスタンスによって作成された後に、ステッパをキャンセルできるようにします。 呼び出し元のランタイムインスタンスは、現在のコントロールランタイムインスタンスと一致する必要があります。 これは、通常、元のステッパが再アクティブ化される可能性があるクロススレッドのステップ実行シナリオで使用されます。 ステップマネージャーは、ステッパを閉じ、送信のステップは完了しません。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

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)

実行が次に再開されたときにステップが実行されるように、ステッパオブジェクトを初期化するために使用されます。 このメソッドは、適切なランタイムデバッグモニターを検索し、このランタイムデバッグモニターにステップを設定するように要求することによって実装されます。 このメソッドは、指定されたステッパオブジェクトに対して1回だけ呼び出す必要があります。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

GetControllingRuntimeInstance()

この DkmStepper を現在制御しているランタイムインスタンスを返します。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

GetDataItem<T>()

このコンテナーインスタンスに追加されている t ' のインスタンスを取得します。 このコンテナーに ' t ' が含まれていない場合、この関数は null を返します。

(継承元 DkmDataContainer)
IsExceptionInFlight()

この手順の実行中に、ランタイムモニターが例外を認識しているかどうかを示すフラグを DkmStepper に取得します。 これは、実行時モニターがステップ実行の動作を変更するために使用できます。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

この API は、Visual Studio 11 Update 1 (DkmApiVersion. VS11FeaturePack1) で導入されました。

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

別のスレッドでステップが続行されるときに、ランタイムモニターによって呼び出されます。 ステップマネージャーは、新しいスレッドで使用される新しい DkmStepper を作成し、ステップ実行を開始して、ステップを完了する必要があるランタイムを特定します。 新しいステッパでは、元のステッパと同じ手順の種類とステップユニットが使用されます。 新しい開始命令アドレスを指定し、ステッパの開始アドレスとして設定する必要があります。 元のステッパは生きた状態のままで、新しいステッパが完了すると、イベントは抑制され、最初の完了のステッパが通知されます。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

OnReturnValues(ReadOnlyCollection<DkmRawReturnValue>, Boolean)

ReturnValues イベントを発生させます。 イベントシンクインターフェイスを実装するコンポーネントは、イベント通知を受信します。 すべてのコンポーネントに通知されると、コントロールはを返します。

OnStepArbitration(DkmStepArbitrationReason, DkmRuntimeInstance)

あるステップが、1つのステップで、ランタイムモニターが認識する機能の範囲を離れた状態になった場合、または別のランタイムに移行する可能性がある場合に、ランタイムモニターによって呼び出されます。 ステップ実行マネージャーは、各ランタイムモニターにプロセスを検査する機会を与え、ステップを完了する必要があるランタイムを決定するためのステップ実行を開始します。 ランタイムは、優先順位に従って呼び出されます。 この処理が完了すると、ステッピングマネージャーは、アービトレーションを要求したモニターで AfterSteppingArbitration を呼び出し、新しい制御モニタが検出された場合に応答できるようにします。見つからなかった場合は、手順を完了します。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

OnStepComplete(DkmThread, Boolean)

StepComplete イベントを発生させます。 イベントシンクインターフェイスを実装するコンポーネントは、イベント通知を受信します。 このメソッドはイベントをエンキューし、制御はすぐに呼び出し元に戻ります。

RemoveDataItem<T>()

このコンテナーから ' t ' のインスタンスを削除します。 通常、このメソッドを呼び出す必要はありません。データコンテナーは、オブジェクトが閉じられると自動的に空になるためです。

(継承元 DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

データコンテナーに新しい項目を配置します。

(継承元 DkmDataContainer)
SetExceptionInFlight(Boolean)

ランタイムモニターはこれを呼び出して、DkmStepper のフラグを設定または解除します。このフラグは、協調ランタイムが、現在実行中の例外がある場合のステップ実行の動作を変更するために使用できます。 ステップ実行中に例外が発生した場合に、ランタイムによって呼び出されます。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

この API は、Visual Studio 11 Update 1 (DkmApiVersion. VS11FeaturePack1) で導入されました。

StepControlRequested(DkmStepArbitrationReason, DkmRuntimeInstance)

StepControlRequested は、非コントロールランタイムインスタンスが、そのランタイムへの遷移に達したことを検出すると呼び出されます。 ステップ実行マネージャーは、現在の制御ランタイムインスタンスに呼び出しを転送します。 現在の制御ランタイムインスタンスがステップ実行を停止できる場合は、true に設定する必要があります。 要求元のランタイムが DkmStepper を呼び出すまで、実際の制御は与えられません。 この2つの部分で構成されるプロセスにより、呼び出し元は複数の steppers の制御を同時に要求できます。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

TakeStepControl(Boolean, DkmStepArbitrationReason, DkmRuntimeInstance)

制御されていないランタイムインスタンスが、スレッドがランタイムへの遷移に達したことを検出すると、このコントロールが呼び出されます。 ステップ実行マネージャーは、現在の制御ランタイムインスタンスに呼び出しを転送します。 コントロールを要求しているランタイムインスタンスは、まず、コントロールを必要とするすべての steppers で StepControlRequested を呼び出します。 すべてが true に設定されている場合、ランタイムインスタンスは、制御を取得している各ステッパに対してこのメソッドを呼び出す必要があります。

場所の制約: API は、モニターコンポーネント (コンポーネントレベル 10万) から呼び出す必要があり < ます。

明示的なインターフェイスの実装

IDisposable.Dispose()

追加されます。

適用対象