次の方法で共有


プログラムを起動する

プログラムをデバッグするユーザーは、 F5 キーを押して IDE からデバッガーを実行できます。 これにより、最終的に IDE がデバッグ エンジン (DE) に接続され、次のようにプログラムに接続またはアタッチされる一連のイベントが開始されます。

  1. IDE は最初にプロジェクト パッケージを呼び出して、ソリューションのアクティブなプロジェクト デバッグ設定を取得します。 設定には、開始ディレクトリ、環境変数、プログラムを実行するポート、およびプログラムの作成に使用する DE (指定されている場合) が含まれます。 これらの設定はデバッグ パッケージに渡されます。

  2. DE が指定されている場合、DE はオペレーティング システムを呼び出してプログラムを起動します。 プログラムの起動の結果として、プログラムのランタイム環境が読み込まれます。 たとえば、プログラムが MSIL で記述されている場合、共通言語ランタイムが呼び出されてプログラムが実行されます。

    -又は-

    DE が指定されていない場合、ポートはオペレーティング システムを呼び出してプログラムを起動します。これにより、プログラムの実行時環境が読み込まれます。

    DE を使用してプログラムを起動する場合は、同じ DE がプログラムにアタッチされる可能性があります。

  3. DE またはポートがプログラムを起動したかどうかに応じて、DE 環境またはランタイム環境は、プログラムの説明またはノードを作成し、プログラムが実行されていることをポートに通知します。

    プログラム ノードはデバッグ可能なプログラムの軽量な表現であるため、実行時環境でプログラム ノードを作成することをお勧めします。 プログラム ノードを作成して登録するためだけに DE 全体を読み込む必要はありません。 IDE のプロセスで実行するように DE が設計されていても、IDE が実際に実行されていない場合は、ポートにプログラム ノードを追加できるコンポーネントが必要です。

    新しく作成されたプログラムは、同じ IDE から起動またはアタッチされた、関連または無関係な他のプログラムと共に、デバッグ セッションを作成します。

    プログラムによって、ユーザーが最初に F5 キーを押すと、Visual Studio のデバッグ パッケージは、 DebugLaunch メソッドを介してプロジェクト パッケージ (起動するプログラムの種類に関連付けられている) を呼び出します。これにより、 VsDebugTargetInfo2 構造にソリューションのアクティブなプロジェクト デバッグ設定が入力されます。 この構造体は、 LaunchDebugTargets2 メソッドの呼び出しを通じてデバッグ パッケージに返されます。 その後、デバッグ パッケージによってセッション デバッグ マネージャー (SDM) がインスタンス化され、デバッグ対象のプログラムと関連するデバッグ エンジンが起動されます。

    SDM に渡される引数の 1 つは、プログラムの起動に使用される DE の GUID です。

    DE GUID が GUID_NULLされていない場合、SDM は DE を共同作成し、その LaunchSuspended メソッドを呼び出してプログラムを起動します。 たとえば、プログラムがネイティブ コードで記述されている場合、 IDebugEngineLaunch2::LaunchSuspendedCreateProcessResumeThread (Win32 関数) を呼び出してプログラムを実行する可能性があります。

    プログラムを起動すると、プログラムのランタイム環境が読み込まれます。 その後、DE またはランタイム環境のいずれかが、プログラムを記述する IDebugProgramNode2 インターフェイスを作成し、このインターフェイスを AddProgramNode に渡して、プログラムが実行されていることをポートに通知します。

    GUID_NULLが渡された場合、ポートはプログラムを起動します。 プログラムが実行されると、ランタイム環境によって、プログラムを記述する IDebugProgramNode2 インターフェイスが作成され、 IDebugPortNotify2::AddProgramNodeに渡されます。 これにより、プログラムが実行されていることをポートに通知します。 その後、SDM はデバッグ エンジンを実行中のプログラムにアタッチします。

このセクションでは...

ポートに通知すると、 プログラムが起動され、ポートに通知された後の動作が説明されます。

デバッグ セッションで DE をプログラムにアタッチする準備ができたときに、起動後にドキュメントをアタッチする。

  • デバッグ タスク には、プログラムの起動や式の評価など、さまざまなデバッグ タスクへのリンクが含まれています。