DkmClrInstructionAddress クラス

定義

DkmClrInstructionAddress は、マネージド コードのアドレスに使用されます。

派生クラス: DkmClrNcInstructionAddress

public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")]
public class DkmClrInstructionAddress : Microsoft.VisualStudio.Debugger.DkmInstructionAddress
[<System.Runtime.InteropServices.Guid("ef7a9773-03a1-0aab-55bb-ee6b870e6246")>]
type DkmClrInstructionAddress = class
    inherit DkmInstructionAddress
Public Class DkmClrInstructionAddress
Inherits DkmInstructionAddress
継承
DkmClrInstructionAddress
派生
属性

プロパティ

CPUInstructionPart

[省略可能]CPUInstructionPart は、CPU が実行するアドレスを提供します。 これは常にネイティブ命令に対して提供されます。 これは、アドレス オブジェクトの作成方法に応じて、CLR またはカスタム アドレスに提供される場合があります。

(継承元 DkmInstructionAddress)
ILOffset

ILOffset は、このアドレスが表す IL 命令のインデックスです。 この値は、指定されたメソッド内にあるが、特定の IL 命令には関連付けられていない命令に対して UInt32.MaxValue に設定できます。 これは、IL 命令にマップされない CLR ネイティブ命令に使用されます。 (ICorDebugILFrame::GetIP はMAPPING_UNMAPPED_ADDRESSを示します)。

MethodId

このメソッドのバージョンとトークンのペア。

ModuleInstance

InstructionPointer を含むモジュール。

NativeOffset

標準.NET Frameworkの場合、NativeOffset は、CPU 命令が見つかるメソッドの開始を基準としたバイト オフセットです。 この値を目的として、 メソッドは連続したバイト ブロックとして扱う必要があります。 メソッドが Just-In-Time コンパイルされていない場合、またはこのアドレスが IL アドレスを純粋に参照するために使用されている場合、NativeOffset は UInt32.MaxValue に設定されます。

ネイティブ コンパイル .NET Framework モジュールの場合、この値はモジュール内のネイティブ命令の RVA です。

Process

DkmProcess は、デバッグ中のターゲット プロセスを表します。 デバッガーはプロセスをデバッグするため、これはデバッグの基本的な単位です。 DkmProcess は、システム プロセスまたはミニダンプなどの仮想プロセスを表すことができます。

(継承元 DkmInstructionAddress)
RuntimeInstance

ターゲット プロセスで実行されている CLR インスタンスを表します。

TagValue

DkmInstructionAddress は抽象基本クラスです。 この列挙型は、このオブジェクトがどの派生クラスのインスタンスであるかを示します。

(継承元 DkmInstructionAddress)

メソッド

CompareTo(DkmInstructionAddress)

2 つの命令アドレスを比較し、一方が他方より小さいか、等しいか、または大きいかを示す値を返します。 アドレスは同じモジュールのアドレスである必要があります。

(継承元 DkmInstructionAddress)
Create(DkmClrRuntimeInstance, DkmClrModuleInstance, DkmClrMethodId, UInt32, UInt32, DkmInstructionAddress+CPUInstruction)

新しい DkmClrInstructionAddress オブジェクト インスタンスをCreateします。

DecodeAsyncStateMachineAttribute()

非同期ステート マシン型と、その型の MoveNext メソッドのメソッド トークンを取得します。

場所の制約: API は Monitor コンポーネント (コンポーネント レベル < 100,000) から呼び出す必要があります。

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

GetCorFunction()

ICorDebugFunction オブジェクトへの直接アクセスを提供します。このオブジェクトは、式エバリュエーターまたはその他のコンポーネントを使用してアプリ ドメインを検査できます。

返されるインターフェイスは、ターゲット プロセスの検査にのみ使用でき、実行の制御には使用しないでください (ステップ実行、ブレークポイントなし、続行なしなど)。 これはサポートされていないため、未定義の動作になります。

場所の制約: API は Monitor コンポーネント (コンポーネント レベル < 100,000) から呼び出す必要があります。

GetCurrentCPUAddress()

DkmInstructionAddress を CPU InstructionAddress に解決します。 これは ResolveCPUInstructionAddress の逆マッピングです。 この API は現在、CLR DkmRuntimeInstance オブジェクトでのみサポートされています。

場所の制約: この API は通常、クライアントで呼び出す必要がありますが、CLR アドレスを変換するためにサーバー上で呼び出すことができます (ネイティブ コンパイルでは呼び出されません)。

(継承元 DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

DkmInstructionAddress を CPU InstructionAddress に解決します。 これは ResolveCPUInstructionAddress の逆マッピングです。 この API は現在、CLR DkmRuntimeInstance オブジェクトでのみサポートされています。

このメソッドは、指定した作業リストに新しい作業項目を追加し、作業項目が追加されると を返します。 作業項目の実際の処理は非同期です。 呼び出し元には、完了ルーチンを介して要求が完了したことを通知されます。

場所の制約: この API は通常、クライアントで呼び出す必要がありますが、CLR アドレスを変換するためにサーバー上で呼び出すことができます (ネイティブ コンパイルでは呼び出されません)。

(継承元 DkmInstructionAddress)
GetNativeCodeMap(DkmStackWalkFrame)

このメソッドがネイティブ コードにコンパイルされた方法のマップを提供します。

GetNonUserCodeMetadataFlags()

この命令アドレスの非ユーザー コードの状態を取得します。

GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

この命令アドレスの非ユーザー コードの状態を取得します。

このメソッドは、指定した作業リストに新しい作業項目を追加し、作業項目が追加されると を返します。 作業項目の実際の処理は非同期です。 呼び出し元には、完了ルーチンを介して要求が完了したことを通知されます。

GetSymbol()

DkmInstructionAddress を DkmInstructionSymbol に変換します。 DkmInstructionAddress が DkmModule にない場合、GetSymbol は null (ネイティブ コードではS_FALSE) を返します。

(継承元 DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

2 つの命令アドレスを比較し、それらが同じ関数内にあるかどうかを判断します。

場所の制約: API は IDE コンポーネント (コンポーネント レベル > 100,000) から呼び出す必要があります。

(継承元 DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

指定された命令アドレスがユーザー コードかどうかを判断します。

このメソッドは、指定した作業リストに新しい作業項目を追加し、作業項目が追加されると を返します。 作業項目の実際の処理は非同期です。 呼び出し元には、完了ルーチンを介して要求が完了したことを通知されます。

場所の制約: 注: Visual Studio 2017 Update 8 では、API の CallDirection は 'Normal' から '双方向' にされ、任意のコンポーネントから呼び出すことができます。

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

(継承元 DkmInstructionAddress)
IsUserCodeWithoutCheckingLineInfo()

マネージ DM によって実装され、shim EE によって使用されるヘルパー メソッドは、非同期の戻りスタックを歩いている間にメソッドがユーザー コードであるかどうかを判断します。 通常の IsUserCode() メソッドは使用しません。これは、そのメソッドがシンボル プロバイダーへのラウンド トリップを行って、行情報があるかどうかを確認するためです。 これを回避するために、このメソッドを使用して、マネージド DM に他のチェックを実行します。 次に、shim EE がシンボル プロバイダーに戻ると、シンボル プロバイダーは行情報をチェックします。 このようにすることで、マネージド リターン スタック全体をリモート側への 1 回のラウンド トリップで計算できます。戻りスタック フレームがユーザー コードかどうかを判断するために、余分なチャットを行ったり来たりする必要はありません。

場所の制約: API は Monitor コンポーネント (コンポーネント レベル < 100,000) から呼び出す必要があります。

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

適用対象