Visual Studio での 1 つ以上のプロセスのデバッグ
ここでは、プロセスのデバッグ開始、プロセス間の切り替え、実行の中断と続行、ソースのステップ実行、デバッグの停止、プロセスの終了/プロセスからのデタッチの方法について説明します。
内容
複数のプロセスの実行動作を構成する
ソースとシンボル (.pdb) ファイルを検索する
VS ソリューション内の複数のプロセスを開始する、プロセスにアタッチする、デバッガーでプロセスを自動的に開始する
プロセス間を切り替える、実行を中断/続行する、ソースをステップ実行する
デバッグを停止する、プロセスを終了する/プロセスからデタッチする
複数のプロセスの実行動作を構成する
既定では、複数のプロセスがデバッガーで実行されているとき、デバッガーの中断、ステップ実行、停止のコマンドは通常、すべてのプロセスに影響を与えます。 たとえば、1 つのプロセスがブレークポイントで中断されると、他のすべてのプロセスの実行も一時停止されます。 コマンドの実行対象をより詳細に制御するために、この既定の動作を変更できます。
[デバッグ] メニューの [オプションと設定] をクリックします。
[デバッグ]/[全般] ページで、[1 つのプロセスがブレークするとき、他のプロセスもブレークする] チェック ボックスをオフにします。
内容
ソースとシンボル (.pdb) ファイルを検索する
プロセスのソース コードを処理するために、デバッガーにはプロセスのソース ファイルとシンボル ファイルへのアクセスが必要になります。 「シンボル (.pdb) ファイル、ソース ファイル、およびバイナリ ファイルの検索」を参照してください。
プロセスのこれらのファイルにアクセスできない場合は、[逆アセンブル] ウィンドウを使用してそれらのファイルを検索できます。 「方法 : [逆アセンブル] ウィンドウを使用する」を参照してください。
内容
VS ソリューション内の複数のプロセスを開始する、プロセスにアタッチする、デバッガーでプロセスを自動的に開始する
- Visual Studio ソリューション内の複数のプロセスのデバッグを開始する • スタートアップ プロジェクトを変更する • ソリューション内の特定のプロジェクトを開始する • ソリューション内の複数のプロジェクトを開始する • プロセスにアタッチする • デバッガーでプロセスを自動的に開始する
注意
デバッガーは、子プロジェクトが同じソリューション内にある場合でも、デバッグ対象のプロセスによって開始された子プロセスに自動的にアタッチされません。子プロセスをデバッグするには:
-
子プロセスが開始された後、そのプロセスにアタッチします。
または
-
デバッガーの新しいインスタンスで子プロセスが自動的に開始されるように Windows を構成します。
Visual Studio ソリューション内の複数のプロセスのデバッグを開始する
Visual Studio ソリューション内に独立して実行できる複数のプロジェクト (個別のプロセスで実行されるプロジェクト) があるときは、デバッガーによって起動されるプロジェクトを選択できます。
スタートアップ プロジェクトを変更する
ソリューションのスタートアップ プロジェクトを変更するには、ソリューション エクスプローラーでプロジェクトを選択し、コンテキスト メニューの [スタートアップ プロジェクトに設定] をクリックします。
ソリューション内の特定のプロジェクトを開始する
既定のスタートアップ プロジェクトを変更せずにソリューションのプロジェクトを開始するには、ソリューション エクスプローラーでプロジェクトを選択し、コンテキスト メニューの [デバッグ] をクリックします。 次に、[新しいインスタンスを開始] または [新しいインスタンスにステップ イン] をクリックできます。
VS ソリューション内の複数のプロセスを開始する、プロセスにアタッチする、デバッガーでプロセスを自動的に開始する
内容
ソリューション内の複数のプロジェクトを開始する
ソリューション エクスプローラーでソリューションを選択し、コンテキスト メニューの [プロパティ] をクリックします。
[プロパティ] ダイアログ ボックスで、[共通プロパティ]、[スタートアップ プロジェクト] の順にクリックします。
変更するプロジェクトごとに、[開始]、[デバッグなしで開始]、[なし] のいずれかを選択します。
VS ソリューション内の複数のプロセスを開始する、プロセスにアタッチする、デバッガーでプロセスを自動的に開始する
内容
プロセスにアタッチする
デバッガーは、Visual Studio の外部プロセスで実行されているプログラム (リモート デバイスで実行されているプログラムなど) にもアタッチできます。 プログラムにアタッチした後、デバッガーの実行コマンドを使用したり、プログラムの状態をチェックしたりできます。 プログラムのチェック機能は、デバッグ情報付きでビルドされたプログラムかどうか、プログラムのソース コードにアクセスできるかどうか、および共通言語ランタイムの JIT コンパイラがデバッグ情報を追跡しているかどうかによって限定される場合があります。
詳細については、「実行中のプロセスへのアタッチ」を参照してください。
ローカル コンピューター上で実行されているプロセスにアタッチする
[デバッグ]、[プロセスにアタッチ] の順にクリックします。 [プロセスにアタッチ] ダイアログ ボックスの [選択可能なプロセス] ボックスの一覧で、アタッチするプロセスを選択し、[アタッチ] をクリックします。
内容
デバッガーでプロセスを自動的に開始する
場合によっては、別のプロセスで起動されたプログラムのスタートアップ コードをデバッグする必要があります。 たとえば、サービスやカスタムのセットアップ動作などです。 このような場合、アプリケーションの起動時にデバッガーを起動して自動的にアタッチできます。
レジストリ エディター (regedit.exe) を起動します。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options フォルダーに移動します。
デバッガーで起動するアプリのフォルダーを選択します。
アプリの名前が子フォルダーとして表示されない場合は、[Image File Execution Options] を選択し、コンテキスト メニューで [新規作成]、[キー] の順にクリックします。 新しいキーを選択し、ショートカット メニューの [名前の変更] をクリックして、アプリの名前を入力します。
app フォルダーのコンテキスト メニューで [新規作成]、[文字列の値] の順にクリックします。
新しい値の名前を「New Value」から「debugger」に変更します。
デバッガー エントリのコンテキスト メニューの [変更] をクリックします。
[文字列の編集] ダイアログ ボックスの [Value data] ボックスに「vsjitdebugger.exe」と入力します。
内容
プロセス間を切り替える、実行を中断/続行する、ソースをステップ実行する
- プロセス間を切り替える • 中断、ステップ実行、続行のコマンド
プロセス間を切り替える
デバッグ中には複数のプロセスにアタッチできますが、デバッガーでアクティブになっているプロセスは常に 1 つだけです。 [デバッグの場所] ツール バーまたは [プロセス] ウィンドウでアクティブまたは現在のプロセスを設定できます。 プロセス間で切り替えるには、両方のプロセスが中断モードであることが必要です。
現在のプロセスを設定するには
[デバッグの場所] でツール バーで、[プロセス] をクリックして [プロセス] ボックスの一覧を表示します。 現在のプロセスとして指定するプロセスを選択します。
[デバッグの場所] ツール バーが表示されていない場合は、[ツール]、[カスタマイズ] の順にクリックします。 [ツール バー] タブで、[デバッグの場所] を選択します。
[プロセス] ウィンドウを開き (ショートカット: Ctrl+Alt+Z)、現在のプロセスとして設定するプロセスを見つけてダブルクリックします。
現在のプロセスが黄色の矢印でマークされます。
プロジェクトを切り替えると、そのプロジェクトがデバッグ対象の現在のプロセスに設定されます。 表示するすべてのデバッガー ウィンドウに、現在のプロセスの状態が表示され、すべてのステップ実行コマンドは現在のプロセスにのみ影響を与えます。
プロセス間を切り替える、実行を中断/続行する、ソースをステップ実行する
内容
中断、ステップ実行、続行のコマンド
注意
既定では、中断、続行、ステップ実行のコマンドはデバッグ中のすべてのプロセスに影響を与えます。この動作を変更するには、「複数のプロセスの実行動作を構成する」を参照してください
コマンド |
[1 つのプロセスがブレークするとき、他のプロセスもブレークする] オンにした場合 (既定) |
[1 つのプロセスがブレークするとき、他のプロセスもブレークする] オフにした場合 |
[デバッグ] メニュー:
|
すべてのプロセスが中断されます。 |
すべてのプロセスが中断されます。 |
[デバッグ] メニュー:
|
すべてのプロセスが再開されます。 |
一時停止中のすべてプロセスが再開されます。 |
[デバッグ] メニュー:
|
現在のプロセスのステップ実行中にすべてのプロセスが実行されます。 その後、すべてのプロセスが中断されます。 |
現在のプロセスがステップ実行されます。 一時停止中のプロセスが再開されます。 実行中のプロセスが続行されます。 |
[デバッグ] メニュー:
|
N/A |
現在のプロセスがステップ実行されます。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
ソース ウィンドウ
|
すべてのプロセスが中断されます。 |
ソース ウィンドウのプロセスのみ中断されます。 |
ソース ウィンドウのコンテキスト メニュー:
ソース ウィンドウのプロセスは現在のプロセスであることが必要です。 |
ソース ウィンドウのプロセスがカーソル位置まで実行されてから中断されている間に、すべてのプロセスが実行されます。 その後、他のすべてのプロセスが中断されます。 |
ソース ウィンドウのプロセスはカーソル位置まで実行されます。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
[プロセス] ウィンドウのコンテキスト メニュー:
|
N/A |
選択したプロセスが中断されます。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
[プロセス] ウィンドウのコンテキスト メニュー:
|
N/A |
選択したプロセスが再開されます。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
プロセス間を切り替える、実行を中断/続行する、ソースをステップ実行する
内容
デバッグを停止する、プロセスを終了する/プロセスからデタッチする
- 停止、終了、デタッチのコマンド
既定では、複数のプロセスがデバッガーで開いているときに [デバッグ]、[デバッグの停止] をクリックすると、プロセスがデバッガーで開かれた方法に応じて、デバッガーがプロセスを終了するか、すべてのプロセスからデタッチされます。
現在のプロセスがデバッガーで開始された場合、そのプロセスは終了します。
デバッガーを現在のプロセスにアタッチした場合、デバッガーはプロセスからデタッチされ、プロセスは実行中のままになります。
たとえば、Visual Studio ソリューションからプロセスのデバッグを開始し、既に実行されている別のプロセスにアタッチしてから、[デバッグの停止] をクリックした場合、デバッグ セッションは終了し、Visual Studio で開始されたプロセスも終了しますが、アタッチしたプロセスは実行中のままになります。 次の手順を使用してデバッグの停止方法を制御できます。
注意
[1 つのプロセスがブレークするとき、他のプロセスもブレークする] オプションはデバッグの停止、プロセスの終了、プロセスからのデタッチには影響を与えません。
デバッグの停止による個々のプロセスへの影響を変更するには
- [プロセス] ウィンドウを開きます (ショートカット: Ctrl+Alt+Z)。 プロセスを選択し、[デバッグの停止時にデタッチ] チェック ボックスをオンまたはオフにします。
停止、終了、デタッチのコマンド
コマンド |
説明 |
[デバッグ] メニュー:
|
[プロセス] ウィンドウの [デバッグの停止時にデタッチ] オプションによって動作が変更されない場合:
|
[デバッグ] メニュー:
|
すべてのプロセスが終了します。 |
[デバッグ] メニュー:
|
すべてのプロセスからデバッガーがデタッチされます。 |
[プロセス] ウィンドウのコンテキスト メニュー:
|
選択したプロセスからデバッガーがデタッチされます。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
[プロセス] ウィンドウのコンテキスト メニュー:
|
選択したプロセスが終了します。 他のプロセスの既存の状態 (一時停止中または実行中) が維持されます。 |
[プロセス] ウィンドウのコンテキスト メニュー:
|
選択したプロセスに対して [デバッグ]/[デバッグの停止] の動作を切り替えます。
|
デバッグを停止する、プロセスを終了する/プロセスからデタッチする
内容
参照
概念
Visual Studio Debugger の開始、中断、ナビゲート、および停止
Just-In-Time Debugging in Visual Studio (Visual Studio での Just-In-Time デバッグ)