次の方法で共有


ICorProfilerInfo::SetILInstrumentedCodeMap メソッド

更新 : 2007 年 11 月

指定した Microsoft Intermediate Language (MSIL) マップ エントリを使用して、指定した関数のコード マップを設定します。

ms232500.alert_note(ja-jp,VS.90).gifメモ :

.NET Framework Version 2.0 では、特定のアプリケーション ドメインのジェネリック関数を表す FunctionID を指定して SetILInstrumentedCodeMap を呼び出すと、アプリケーション ドメインのその関数のすべてのインスタンスに反映されます。

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

パラメータ

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

  • fStartJit
    [入力] 特定の FunctionID に対して実行する初めての SetILInstrumentedCodeMap メソッドの呼び出しかどうかを示すブール値。指定した FunctionID に対して SetILInstrumentedCodeMap を初めて呼び出す場合は fStartJit を true に設定します。それ以降に呼び出す場合は、false に設定します。

  • cILMapEntries
    [入力] cILMapEntries 配列の要素数。

  • rgILMapEntries
    [入力] それぞれが MSIL オフセットを指定する、COR_IL_MAP 構造体の配列。

解説

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

デバッガは、それぞれの古いオフセットが、元の変更されていない MSIL コード内にある MSIL オフセットを参照し、新しいオフセットは、新しいインストルメント化されたコード内にある MSIL オフセットを参照するものとして動作します。マップは、昇順に格納する必要があります。ステップ実行が正しく機能するように、以下のガイドラインに従ってください。

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

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

  • プログラム データベース (PDB: Program DataBase) ファイルのすべてのシーケンス ポイントのエントリをマップに含めてください。マップは、見つからないエントリの補間は行いません。このため、次のようにマップを指定します。

    (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 システム要件」を参照

ヘッダー : CorProf.idl

ライブラリ : CorGuids.lib

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1

参照

参照

ICorProfilerInfo