カスタム .NET デバッガーは通常、別のプロセスでホストされます。 モバイル プラットフォームではこのようなプロセスの作成が制限または禁止されるため、ターゲット側のカスタム デバッガー コンポーネントをアプリケーション プロセスに読み込む必要があります。
この記事は、.NET 11 以降のバージョンのモバイル プラットフォーム (iOS および Android) でのデバッガーの初期化にのみ適用されます。 NativeAOT には適用されません。
ターゲット側コンポーネントを実装してデプロイする
ターゲット側デバッガー コンポーネントは、 DllGetClassObject エントリ ポイントを持つプロファイラーの動的ライブラリとして実装する必要があります。 実装例については、.NET プロファイラーのサンプルを参照してください。
ターゲット プラットフォームのネイティブ ライブラリ パッケージ、コード署名、読み込み要件に準拠して、アプリケーションの一部として libmscordbi および libmscordaccore 動的ライブラリと共にデプロイする必要があります。
起動時にターゲット側コンポーネントを読み込む
CoreCLR でコンポーネントをプロファイラーとして読み込むには、ランタイムの開始前に次の環境設定を指定します。
| 環境変数 | 価値 |
|---|---|
DOTNET_ENABLE_PROFILING |
1 |
DOTNET_PROFILER |
{<profiler-CLSID>} |
DOTNET_PROFILER_PATH |
<component-path> |
<profiler-CLSID> をコンポーネントのプロファイラー GUID に置き換え、囲んでいる中かっこはそのまま残してください。
<component-path>を、ターゲット アプリのデプロイ内のネイティブ コンポーネントへのパスに置き換えます。
これらの設定の詳細については、「 デバッグとプロファイリングのランタイム構成オプション」を参照してください。
プラットフォームのアプリ起動構成を使用して、これらの設定を指定します。
Note
この手順ではプロファイラー メカニズムを使用してデバッガーを初期化しますが、モバイル プラットフォーム上のサード パーティプロファイラーの汎用サポートは確立しません。
デバッガー インターフェイスを作成する
ターゲット側コンポーネントで、次の初期化を実行します。
- 動的ライブラリ
libmscordbi読み込み、そのCoreCLRCreateCordbObjectExエクスポートを呼び出します。 返されたオブジェクトに対してICorDebugのクエリを実行します。 - ICorDebug::Initialize を呼び出し、マネージド イベント ハンドラーを ICorDebug::SetManagedHandler に登録します。
- ICorDebug::D ebugActiveProcess を使用してアプリにアタッチします。
モジュールの初期読み込みとスタートアップ イベントが見つからないのを回避するには、実行時のスタートアップと添付ファイルを調整して、 DebugActiveProcess が完了する前にマネージド実行が続行されないようにします。
初期化後、他の Unix プラットフォームと同様に、 ICorDebug デバッガー インターフェイスを使用します。
.NET