次の方法で共有


ICorProfilerCallback::ExceptionCatcherEnter メソッド

適切な catch ブロックに制御が渡されていることをプロファイラーに通知します。

HRESULT ExceptionCatcherEnter(
    [in] FunctionID functionId,
    [in] ObjectID   objectId);

パラメーター

  • functionId
    [入力] catch ブロックを含む関数の ID。

  • objectId
    [入力] 処理されている例外の ID。

解説

ExceptionCatcherEnter メソッドが呼び出されるのは、キャッチ ポイントが Just-In-Time (JIT) コンパイラでコンパイルされたコード内にある場合のみです。 アンマネージ コードまたは内部コードでキャッチされた例外は、この通知を呼び出しません。 ExceptionThrown 通知の後、ガベージ コレクションがオブジェクトを移動した可能性があるため、objectId 値が再び渡されます。

スタックがガベージ コレクションを許可する状態ではない可能性があり、プリエンプティブなガベージ コレクションを有効にできないため、このメソッドの実装でプロファイラーをブロックしないでください。 プロファイラーで実装をブロックした場合にガベージ コレクションを試みると、このコールバックが返されるまでランタイムがガベージ コレクションをブロックします。

プロファイラーによるこのメソッドの実装ではマネージ コードを呼び出さないようにする必要があります。呼び出すと、マネージ メモリの割り当てが実行されます。

必要条件

プラットフォーム: 「.NET Framework システム要件」を参照

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

ライブラリ: CorGuids.lib

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

参照

参照

ICorProfilerCallback インターフェイス

ICorProfilerCallback::ExceptionCatcherLeave メソッド