次の方法で共有


DkmClrNcInstructionAddress クラス

定義

DkmClrNcInstructionAddress は、ネイティブ コンパイル CLR コードのアドレスを表すために使用されます。 これには、命令がマネージド概念 (DkmClrNcModuleInstance、メソッド トークン、IL オフセット) とネイティブ概念 (DkmClrNcContainerModuleInstance、RVA) の両方を使用している場所に関する情報が含まれています。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmClrNcInstructionAddress : Microsoft::VisualStudio::Debugger::Clr::DkmClrInstructionAddress
[System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")]
public class DkmClrNcInstructionAddress : Microsoft.VisualStudio.Debugger.Clr.DkmClrInstructionAddress
[<System.Runtime.InteropServices.Guid("377ece5a-e9ff-bb6a-1612-b5d9cc54755f")>]
type DkmClrNcInstructionAddress = class
    inherit DkmClrInstructionAddress
Public Class DkmClrNcInstructionAddress
Inherits DkmClrInstructionAddress
継承
属性

プロパティ

ContainerModule

このアドレスが読み込まれる基になるコンテナー モジュール (ディスク上モジュール)。 シンボル (DkmModule) には、"ModuleInstance" ではなく、このモジュールを介してアクセスします。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

CPUInstructionPart

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

(継承元 DkmInstructionAddress)
GenericParameters

[省略可能]ジェネリック メソッドの場合、これにより、各ジェネリック パラメーターに ECMA 形式の TypeSpec シグネチャが提供されます。 非ジェネリック メソッドの場合、これは null になります。 マージされていないモジュールの場合、これはマッピング (または擬似 IL アセンブリ) に対する相対です。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

ILOffset

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

(継承元 DkmClrInstructionAddress)
MethodId

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

(継承元 DkmClrInstructionAddress)
ModuleInstance

InstructionPointer を含むマネージド モジュール。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

NativeOffset

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

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

(継承元 DkmClrInstructionAddress)
Process

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

(継承元 DkmInstructionAddress)
ReferenceToken

[省略可能]マルチモジュール アセンブリでは、MethodId.Token は適切な仮想モジュールに解決されるメソッド トークンです。 このトークンは、擬似アセンブリで検索できます。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

RuntimeInstance

ターゲット プロセスで実行されているネイティブ コンパイル CLR インスタンスを表します。

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

TagValue

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

(継承元 DkmInstructionAddress)

メソッド

CompareTo(DkmInstructionAddress)

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

(継承元 DkmInstructionAddress)
Create(DkmClrMethodId, UInt32, UInt32, DkmClrNcRuntimeInstance, DkmClrNcModuleInstance, DkmClrNcContainerModuleInstance, ReadOnlyCollection<Byte>, Int32, DkmInstructionAddress+CPUInstruction)

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

この API は、Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) で導入されました。

DecodeAsyncStateMachineAttribute()

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

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

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

(継承元 DkmClrInstructionAddress)
GetCorFunction()

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

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

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

(継承元 DkmClrInstructionAddress)
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)

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

(継承元 DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags()

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

(継承元 DkmClrInstructionAddress)
GetNonUserCodeMetadataFlags(DkmWorkList, DkmCompletionRoutine<DkmGetNonUserCodeMetadataFlagsAsyncResult>)

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

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

(継承元 DkmClrInstructionAddress)
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) で導入されました。

(継承元 DkmClrInstructionAddress)

適用対象