マルチプロセス デバッグ
Visual Studio for Mac で開発された最新のソリューションには、一般的に、複数のプラットフォームをターゲットとする複数のプロジェクトが含まれています。 たとえば、Web サービス プロジェクトが提供するデータに依存するモバイル アプリケーション プロジェクトが含まれるソリューションがあります。 このソリューションを開発する場合、開発者はエラーを解決するために、必要に応じて両方のプロジェクトを同時に実行します。 Xamarin Cycle 9 リリース以降、同時に実行されている複数のプロセスを Visual Studio for Mac でデバッグできるようになりました。 その結果、ブレークポイントを設定し、変数を検査し、実行中の複数のプロジェクトでスレッドを表示することができるようになりました。 これは、複数プロセスのデバッグと呼ばれます。
このガイドでは、複数プロセスのデバッグをサポートする Visual Studio for Mac の主な変更点、複数プロセスをデバッグするソリューションを構成する方法、Visual Studio for Mac で既存のプロセスにアタッチする方法について説明します。
要件
複数プロセスのデバッグには Visual Studio for Mac が必要です。
IDE の変更
開発者が複数プロセスをデバッグしやすくするために、Visual Studio for Mac はユーザー インターフェイスにいくつか変更を加えました。 Visual Studio for Mac のデバッグ ツールバーは更新され、[ソリューション オプション] フォルダーに新しい[ソリューション構成] が追加されました。 また、スレッド パッドに、実行中のプロセスと各プロセスのスレッドが表示されます。 Visual Studio for Mac には、[アプリケーション出力] など、特定の情報に関する複数のデバッグ パッド (各プロセスに 1 つ) も表示されます。
ソリューション構成
既定で、Visual Studio for Mac のデバッグ ツールバーの [ソリューション構成] 領域には、個々のプロジェクトが表示されます。 デバッグ セッションが開始されると、これは Visual Studio for Mac が開始し、デバッガーがアタッチされるプロジェクトになります。
Visual Studio for Mac で複数のプロセスを開始し、デバッグするには、ソリューション構成を作成する必要があります。 ソリューション構成には、[開始] ボタンをクリックするか、⌘↩ (Cmd + Enter キー) を押してデバッグ セッションを開始するときに、ドメイン グループ ソリューションのプロジェクトに含める内容を記述します。 次のスクリーンショットは、複数のソリューション構成がある Visual Studio for Mac のソリューション例です。
[デバッグ] ツールバーの部分
[デバッグ] ツールバーは、ポップアップ メニューでソリューション構成を選択できるように変更されました。 このスクリーンショットは、[デバッグ] ツールバーの部分です。
ソリューション構成 - [デバッグ] ツールバーの [ソリューション構成] をクリックし、ポップアップ メニューから構成を選択して、ソリューション構成を設定することができます。
ビルド ターゲット - プロジェクトのビルド ターゲットを特定します。 この機能は、前のバージョンの Visual Studio for Mac から変更されていません。
デバイス ターゲット - ソリューションを実行するデバイスを選択します。 プロジェクトごとに別のデバイスまたはエミュレーターを指定することができます。
複数のデバッグ パッド
複数ソリューション構成を開始すると、各プロセスに 1 つずつ、複数の Visual Studio for Mac パッドが表示されます。 たとえば、次のスクリーンショットでは、2 つのプロジェクトを実行しているソリューションの 2 つの [アプリケーション出力] パッドがあります。
複数のプロセスとアクティブ スレッド
1 つのプロセスでブレークポイントに到達すると、そのプロセスは実行が一時停止されますが、他のプロセスは実行が続行されます。 単一プロセスのシナリオでは、1 組のパッドにスレッド、ローカル変数、アプリケーション出力などの情報を簡単に Visual Studio for Mac に表示できます。 ただし、複数のブレークポイントがあるプロセスが複数あり、場合によっては複数のスレッドもある場合、すべてのスレッド (とプロセス) のすべての情報を一度で表示しようとすると、開発者がデバッグ セッションの情報に対処しきれなくなる可能性があります。
この問題に対処するために、今後、Visual Studio for Mac は一度に 1 スレッド (アクティブ スレッドと呼ばれます) の情報のみを表示します。 ブレークポイントで一時停止する最初のスレッドがアクティブ スレッドと考えられます。 アクティブ スレッドは、開発者の注意が集中するスレッドです。 ステップ オーバー ⇧⌘O (Shift + Cmd + O キー) などのデバッグ コマンドは、アクティブ スレッドに発行されます。
スレッド パッドには、ソリューション構成の検査対象によるすべてのプロセスとスレッドの情報が表示され、アクティブ スレッドに関する視覚的なキューが示されます。
スレッドは、スレッドをホストするプロセスごとにグループ化されます。 アクティブ スレッドのプロジェクト名と ID は太字で表示され、右向きの矢印が、アクティブ スレッドの横の列に表示されます。 上のスクリーンショットで、プロセス ID 48703 (FirstProject) のスレッド番号 1 はアクティブ スレッドです。
複数のスレッドをデバッグする場合、スレッド パッドを使用して、アクティブ スレッドに切り替えて、そのプロセス (またはスレッド) のデバッグ情報を表示することができます。 アクティブ スレッドを切り替えるには、スレッド パッドで目的のスレッドを選択してダブルクリックします。
複数のプロジェクトが停止している場合のコードのステップ実行
複数のプロジェクトにブレーク ポイントがある場合、Visual Studio for Mac は両方のプロセスを一時停止します。 アクティブ スレッドのコードのステップ オーバーのみが可能です。 スコープの変更によって、デバッガーがフォーカスをアクティブ スレッドから切り替えることができるようになるまで、他のプロセスは一時停止されます。 たとえば、次のスクリーンショットのように、Visual Studio for Mac で 2 つのプロジェクトをデバッグしているとします。
このスクリーンショットで、各ソリューションにはそれぞれブレークポイントがあります。 デバッグが始まり、最初に到達するブレークポイントは、SecondProject の MainClass
の行 10 です。 どちらのプロジェクトにもブレークポイントがあるので、各プロセスが停止します。 ブレークポイントに到達すると、ステップ オーバーの各呼び出しによって、Visual Studio for Mac はアクティブ スレッドのコードをステップ オーバーします。
コードのステップ実行はアクティブ スレッドに限定されるので、Visual Studio for Mac は一度にコード行をステップ実行するときに、他のプロセスは一時停止されたままです。
前のスクリーンショットを例として説明します。for
ループが完了すると、MainClass
の行 11 のブレークポイントに到達するまで、Visual Studio for Mac は FirstProject の実行を許可します。 各ステップ オーバー コマンドについて、Visual Studio for Mac 内部のヒューリスティック アルゴリズムによってアクティブ スレッドが SecondProject に戻るまで、デバッガーは FirstProject を 1 行ずつ進みます。
いずれかのプロジェクトにのみブレークポイントが設定されている場合、そのプロセスのみが一時停止されます。 開発者が一時停止するまで、またはブレークポイントが追加されるまで、他のプロジェクトは引き続き実行されます。
プロセスの一時停止と再開
プロセスを一時停止または再開するには、プロセスを右クリックし、コンテキスト メニューから [一時停止] または [再開] を選択します。
デバッグ ツールバーの外観は、デバッグ対象のプロジェクトの状態に応じて変わります。 複数のプロジェクトが実行中の場合、少なくとも 1 つのプロジェクトが実行中で 1 つのプロジェクトが一時停止であれば、デバッグ ツールバーには [一時停止] ボタンと [再開] ボタンの両方が表示されます。
[デバッグ] ツールバーの [一時停止] ボタンをクリックすると、デバッグ対象のすべてのプロセスが一時停止されます。[再開] ボタンをクリックすると、一時停止されているすべてのプロセスが再開されます。
2 つ目のプロジェクトのデバッグ
Visual Studio for Mac で 1 つ目のプロジェクトの開始後に、2 つ目のプロジェクトをデバッグすることもできます。 1 つ目のプロジェクトが開始された後に、Solution Pad のプロジェクトを*右クリックし、[デバッグの開始] を選択します。
ソリューション構成の作成
ソリューション構成は、[開始] ボタンを押してデバッグを開始するときに、実行するプロジェクトを Visual Studio for Mac に指示します。 1 つのソリューションに複数のソリューション構成が存在する可能性があります。 そのため、プロジェクトをデバッグするときに実行されるプロジェクトを指定することができます。
Xamarin Studio で新しいソリューション構成を作成するには、次の操作を実行します。
Visual Studio for Mac で [ソリューション オプション] ダイアログを開き、[実行] > [構成] の順に選択します。
[新規作成] ボタンをクリックし、新しいソリューション構成の名前を入力し、[作成] をクリックします。 新しいソリューション構成が [構成] ウィンドウに表示されます。
構成一覧で新しい実行構成を選択します。 [ソリューション オプション] ダイアログには、ソリューションの各プロジェクトが表示されます。 デバッグ セッションの開始時に開始する各プロジェクトをオンにします。
MultipleProjects ソリューション構成が [デバッグ] ツールバーに表示されます。開発者はこのツールバーで、2 つのプロジェクトを同時に実行することができます。
まとめ
このガイドでは、Visual Studio for Mac で複数のプロセスをデバッグする方法について説明しました。 また、複数のプロセスのデバッグのための IDE のいくつかの変更点と、関連するいくつかの動作についても説明しました。