Visual Studio for Mac を使用したデバッグDebugging with Visual Studio for Mac

Visual Studio for Mac には、.NET Core、.NET Framework、Unity、Xamarin アプリケーションをサポートするデバッガーが用意されています。Visual Studio for Mac has debuggers with support for .NET Core, .NET Framework, Unity, and Xamarin applications.

Visual Studio for Mac では、Visual Studio for Mac ですべてのプラットフォームでマネージド コードをデバッグするために、Mono ランタイムに実装されている Mono Soft Debugger を使用しています。Visual Studio for Mac uses the Mono Soft Debugger, which is implemented into the Mono runtime, allowing Visual Studio for Mac to debug managed code across all platforms.

デバッガーThe Debugger

Visual Studio for Mac では、すべての Xamarin アプリケーションのマネージド コード (C# または F#) をデバッグするために Mono Soft Debugger を使用しています。Visual Studio for Mac uses the Mono Soft Debugger to debug managed (C# or F#) code in all Xamarin applications. Mono Soft Debugger は通常のデバッガーとは異なり、Mono ランタイムに組み込まれている協調的なデバッガーです。生成されたコードと Mono ランタイムが IDE と連携して、デバッグ エクスペリエンスが提供されます。The Mono Soft debugger is different from regular debuggers in that it is a cooperative debugger that is built into the Mono runtime; the generated code and Mono runtime cooperate with the IDE to provide a debugging experience. Mono ランタイムはワイヤ プロトコルを介してデバッグ機能を公開しています。詳細については、Mono のドキュメントを参照してください。The Mono runtime exposes the debugging functionality through a wire protocol, which you can read more about in the Mono documentation.

LLDBGDB などのハード デバッガーの場合、デバッグ済みのプログラムの知識や連携を使用せずにプログラムを制御しますが、ネイティブ iOS または Android コードをデバッグする必要があり、Xamarin アプリケーションをデバッグするときには便利なことがあります。Hard debuggers, such as LLDB or GDB, control a program without the knowledge or cooperation from the debugged program, but can still be useful when debugging Xamarin applications in the event that you need to debug native iOS or Android code.

.NET Core および ASP.NET Core アプリケーションの場合、Visual Studio for Mac では .NET Core デバッガーが使用されます。For .NET Core and ASP.NET Core applications, Visual Studio for Mac uses the .NET Core debugger. このデバッガーは協調的なデバッガーでもあり、.NET ランタイムと連携して動作します。This debugger is also a cooperative debugger and works with the .NET runtime.

デバッガーの使用Using the debugger

どのアプリケーションのデバッグを開始する場合でも、構成が [デバッグ] に設定されていることを確認します。To start debugging any application, always ensure that the configuration is set to Debug. デバッグ構成は、ブレークポイントなどのデバッグ、データ ビジュアライザーの使用、コール スタックの表示をサポートする便利なツール セットです。The debug configuration provides a helpful set of tools to support debugging, such as breakpoints, using data visualizers, and viewing the call stack:

デバッグ構成

ブレークポイントの設定Setting a breakpoint

IDE でブレークポイントを設定するには、エディターで、中断するコードの行番号の横にある余白領域をクリックします。To set a breakpoint in your IDE, click on the margin area of your editor, next to the line number of the code where you wish to break:

余白でのブレークポイントの設定

コードに設定したすべてのブレークポイントを表示するには、 [ブレークポイント] ウィンドウ を開きます。You can view all the breakpoints that have been set in your code by going to the Breakpoints Window:

ブレークポイントの一覧

[デバッグ開始]Start debugging

デバッグを開始するには、ターゲットのブラウザー、デバイス、またはミュレーター/エミュレーターを選択します。To start debugging, select the target browser, device, or simulator/emulator:

デバッグ構成 ターゲット デバイスの選択Debug configuration Select target device

[再生] ボタンを押すか、Command キーを押しながら Return キー を押してアプリケーションを展開します。Then deploy your application by pressing the Play button, or Cmd + return. ブレークポイントにヒットすると、コードは黄色で強調表示されます。When you hit a breakpoint, the code will be highlighted yellow:

ブレークポイントにヒットしたことを示す強調表示

オブジェクト値の検査に使用できるツールなど、デバッグ ツールをこの時点で使用すると、コードで発生していることについて詳細情報を入手できます。Debugging tools, such as the one used to inspect the values of objects, can be used at this point to get more information about what is happening in your code:

デバッグの視覚化

条件付きブレークポイントConditional breakpoints

ブレークポイントが発生する状況を指示した規則を設定することもできます。これは 条件付きブレークポイント の追加とも呼ばれます。You can also set rules dictating the circumstances under which a breakpoint should occur, this is known as adding a conditional breakpoint. 条件付きブレークポイントを設定するには、 [ブレークポイントのプロパティ] ウィンドウ にアクセスします。アクセスする方法は 2 つあります。To set a conditional breakpoint, access the Breakpoint Properties window, which can be done in two ways:

  • 新しい条件付きブレークポイントを追加するには、ブレークポイントを設定するコードの行番号の左にあるエディターの余白を右クリックし、[ブレークポイントの作成] を選択します。To add a new conditional breakpoint, right-click on the editor margin, to the left of the line number for the code you wish to set a breakpoint on, and select New Breakpoint:

ブレークポイント コンテキスト メニュー

  • 既存のブレークポイントに条件を追加するには、ブレークポイントを右クリックし、 [ブレークポイントのプロパティ] を選択します。または [ブレークポイント] ウィンドウで、次の図の [ブレークポイントの編集] ボタンを選択します。To add a condition to an existing breakpoint, right-click on the breakpoint and select Breakpoint Properties, or, in the Breakpoints Window, select the Edit Breakpoint button illustrated below:

[ブレークポイント] ウィンドウで既存のブレークポイントを編集する

この画面で、ブレークポイントが発生する条件を入力できます。You can then enter the condition under which you want the breakpoint to occur:

ブレークポイント条件の編集

コードのステップ実行Stepping through code

デバッグ ツールでは、ブレークポイントに達すると、プログラムの実行を制御できます。When a breakpoint has been reached, the Debug tools enable you to get control over the program's execution. Visual Studio for Mac には、コードの実行とステップ実行に使用できるボタンが 4 つ表示されます。Visual Studio for Mac will display four buttons, allowing you to run and step through the code. Visual Studio for Mac では次のように表示されます。In Visual Studio for Mac, they will look like the following:

コードをステップ実行するボタン

この 4 つのボタンについて説明します。Here are the four buttons:

  • 再生 - コードの実行が開始され、次のブレークポイントまで実行されます。Play - This will begin executing the code, until the next breakpoint.
  • ステップ オーバー - 次のコード行が実行されます。Step Over - This will execute the next line of code. 次行が関数呼び出しの場合、[ステップ オーバー] をクリックするとその関数が実行され、関数の の次のコード行で停止します。If the next line is a function call, Step Over will execute the function, and will stop at the next line of code after the function.
  • ステップ イン - このボタンの場合も次のコード行が実行されます。Step Into - This will also execute the next line of code. 次行が関数呼び出しの場合、[ステップ イン] をクリックすると関数の最初の行で停止するので、関数のデバッグを 1 行ずつ続行できます。If the next line is a function call, Step Into will stop at the first line of the function, allowing you to continue line-by-line debugging of the function. 次行が関数ではない場合の動作は、[ステップ オーバー] と同じです。If the next line is not a function, it will behave the same as Step Over.
  • ステップ アウト - 現在の関数が呼び出された行に戻ります。Step Out - This will return to the line where the current function was called.

次に実行されるステートメントの変更Change which statement is executed next

デバッガーが一時停止されているとき、余白にある矢印によって次に実行されるコード行が示されます。While the debugger is paused, an arrow in the margin shows which line of code will be executed next. この矢印をクリックして別のコード行にドラッグすることで、実行されるステートメントを変更できます。You can click and drag the arrow to a different line of code to change which statement will be executed. コード行を右クリックし、コンテキスト メニューから [次のステートメントの設定] を選択する方法でも同じことをできます。You can achieve the same thing by also right-clicking on a line of code and selecting Set Next Statement from the context menu.

矢印をドラッグ アンド ドロップして次のステートメントを設定する

注意事項

現在の実行行を変更すると、アプリケーションで予期しない動作が発生する可能性があります。Changing the current line of execution can cause unexpected behavior in an application. また、次に実行するステートメントを変更できない場合もあります。There are also some conditions where changing the next statement to execute is not possible. たとえば、あるメソッドから別のメソッドに矢印をドラッグしても機能しません。For example, dragging the arrow from one method to another method will not work. こうしたサポートされていないケースでは、現在の実行行を変更できなかったことを知らせるダイアログが Visual Studio for Mac に表示されます。In these unsupported cases, Visual Studio for Mac will display a dialog to let you know it was not possible to change the current line of execution.

Mono のクラス ライブラリのデバッグDebugging Mono's class libraries

Xamarin 製品には、Mono のクラス ライブラリのソース コードが付属しているため、デバッガーからのステップ実行にそのソース コードを利用して、内部でどのような処理が実行されているかを検査することができます。Xamarin products ship with the source code for Mono's class libraries, and you can use this to single step from the debugger to inspect how things are working under the hood.

この機能はデバッグ中に消費されるメモリが多いため、既定ではオフです。Since this feature consumes more memory during debugging, it is turned off by default.

この機能を有効にするには、 [Visual Studio for Mac] > [ユーザー設定] > [デバッガー] に移動し、次の図のように、" [Step into external code](外部コードにステップ イン) " オプションが オン になっていることを確認します。To enable this feature, browse to Visual Studio for Mac > Preferences > Debugger and ensure that the "Step into external code" option is selected, as illustrated below:

外部コードにステップイン オプション

関連項目See also