次の方法で共有


ICorProfilerInfo::SetILInstrumentedCodeMap メソッド

指定した共通中間言語 (CIL) マップ エントリを使用して、指定した関数のコード マップを設定します。

Note

.NET Framework バージョン 2.0 では、特定のアプリケーション ドメインでジェネリック関数を表す FunctionIDSetILInstrumentedCodeMap を呼び出すと、アプリケーション ドメイン内のその関数のすべてのインスタンスに影響します。

構文

HRESULT SetILInstrumentedCodeMap(
    [in]  FunctionID functionId,
    [in]  BOOL       fStartJit,
    [in]  ULONG      cILMapEntries,
    [in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);

パラメーター

functionId
[in] コード マップを設定する関数の ID。

fStartJit
[in] SetILInstrumentedCodeMap メソッドの呼び出しが、特定の FunctionID の最初のものであるかどうかを示すブール値。 指定された FunctionID についての SetILInstrumentedCodeMap の最初の呼び出しの場合は fStartJittrue に設定し、それ以降の場合は false に設定します。

cILMapEntries
[in] cILMapEntries 配列内の要素の数。

rgILMapEntries
[in]COR_IL_MAP構造体の配列。それぞれが CIL オフセットを指定します。

解説

プロファイラーは多くの場合、メソッドをインストルメント化する (たとえば、特定のソース行に到達したときに通知する) ために、メソッドのソース コード内にステートメントを挿入します。 SetILInstrumentedCodeMap を使用すると、プロファイラーは元の CIL 命令を新しい場所にマップできます。 プロファイラーでは、ICorProfilerInfo::GetILToNativeMapping メソッドを使用して、特定のネイティブ オフセットの元の CIL オフセットを取得できます。

デバッガーは、各古いオフセットが元の変更されていない CIL コード内の CIL オフセットを参照し、新しい各オフセットが新しいインストルメント化されたコード内の CIL オフセットを参照することを前提としています。 マップは昇順に並べ替える必要があります。 ステップを正常に行うには、次のガイドラインに従ってください。

  • インストルメント化された CIL コードを並べ替えないでください。

  • 元の CIL コードを削除しないでください。

  • プログラム データベース (PDB) ファイルのすべてのシーケンス ポイントのエントリをマップに含めます。 マップでは、不足しているエントリは補間されません。 次のマップがあるとします。

    (古いものが 0、新しいものが 0)

    (古いものが 5、新しいものが 10)

    (古いものが 9、新しいものが 20)

    • 古いオフセットの 0、1、2、3、または 4 は、新しいオフセット 0 にマップされます。

    • 古いオフセットの 5、6、7、または 8 は、新しいオフセットの 10 にマップされます。

    • 古いオフセットの 9 以上は、新しいオフセットの 20 にマップされます。

    • 新しいオフセットの 0、1、2、3、4、5、6、7、8、または 9 は、古いオフセットの 0 にマップされます。

    • 新しいオフセットの 10、11、12、13、14、15、16、17、18、または 19 は、古いオフセットの 5 にマップされます。

    • 新しいオフセットの 20 以上は、古いオフセットの 9 にマップされます。

.NET Framework 3.5 およびそれ以前のバージョンでは、CoTaskMemAlloc メソッドを呼び出すことによって rgILMapEntries 配列を割り当てます。 ランタイムでこのメモリの所有権が取得されるため、プロファイラーではこれを解放しないでください。

必要条件

:システム要件」を参照してください。

ヘッダー : CorProf.idl、CorProf.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 1.1 以降で使用可能

関連項目