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

重要

Visual Studio for Mac は、Microsoft の モダン ライフサイクル ポリシーに従って、2024 年 8 月 31 日に廃止される予定です。 引き続き Visual Studio for Mac を使用できますが、VS Code 用の新しい C# 開発キット拡張機能のプレビュー バージョンなど、Mac 上の開発者向けの他のいくつかのオプションがあります。

サポートタイムラインと代替方法の詳細をご確認ください

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

Visual Studio for Mac では、Visual Studio for Mac ですべてのプラットフォームでマネージド コードをデバッグするために、Mono ランタイムに実装されている Mono Soft Debugger を使用しています。

デバッガー

Visual Studio for Mac では、すべての Xamarin アプリケーションのマネージド コード (C# または F#) をデバッグするために Mono Soft Debugger を使用しています。 Mono Soft Debugger は通常のデバッガーとは異なり、Mono ランタイムに組み込まれている協調的なデバッガーです。生成されたコードと Mono ランタイムが IDE と連携して、デバッグ エクスペリエンスが提供されます。 Mono ランタイムはワイヤ プロトコルを介してデバッグ機能を公開しています。詳細については、Mono のドキュメントを参照してください。

LLDBGDB のようなハード デバッガーを使用すると、デバッグされるプログラムから情報や協力を得ることなく、プログラムを制御できます。 Xamarin アプリケーションをデバッグする際に、ネイティブ iOS または Android コードをデバッグする必要がある場合、これは引き続き役立ちます。

.NET Core および ASP.NET Core アプリケーションの場合、Visual Studio for Mac では .NET Core デバッガーが使用されます。 このデバッガーは協調的なデバッガーでもあり、.NET ランタイムと連携して動作します。

デバッガーの使用

どのアプリケーションのデバッグを開始する場合でも、構成が [デバッグ] に設定されていることを確認します。 デバッグ構成は、ブレークポイントなどのデバッグ、データ ビジュアライザーの使用、コール スタックの表示をサポートする便利なツール セットです。

Debug configuration

ブレークポイントの設定

IDE でブレークポイントを設定するには、エディターで、中断するコードの行番号の横にある余白領域をクリックします。

Setting breakpoint in margin

コードに設定したすべてのブレークポイントを表示するには、[ブレークポイント] ウィンドウを開きます。

List of breakpoints

[デバッグ開始]

デバッグを開始するには、ターゲットのブラウザー、デバイス、またはミュレーター/エミュレーターを選択します。

Debug configurationSelect target device

[再生] ボタンを押すか、Command キーを押しながら Return キーを押してアプリケーションを展開します。 ブレークポイントにヒットすると、コードは黄色で強調表示されます。

Highlight showing breakpoint has been hit

オブジェクト値の検査に使用できるツールなど、デバッグ ツールをこの時点で使用すると、コードで発生していることについて詳細情報を入手できます。

Debug visualizations

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

ブレークポイントが発生する状況を指示した規則を設定することもできます。 これは、条件付きブレークポイント の追加と呼ばれます。 条件付きブレークポイントを設定するには、[ブレークポイントのプロパティ] ウィンドウにアクセスします。アクセスする方法は 2 つあります。

  • 新しい条件付きブレークポイントを追加するには、ブレークポイントを設定するコードの行番号の左にあるエディターの余白を右クリックし、[ブレークポイントの作成] を選択します。

Breakpoint context menu

  • 既存のブレークポイントに条件を追加するには、ブレークポイントを右クリックし、[ブレークポイントのプロパティ] を選択します。または [ブレークポイント] ウィンドウで、次の図の [ブレークポイントの編集] ボタンを選択します。

Edit existing Breakpoint in Breakpoints Window

この画面で、ブレークポイントが発生する条件を入力できます。

Edit Breakpoint conditions

コードのステップ実行

デバッグ ツールでは、ブレークポイントに達すると、プログラムの実行を制御できます。 Visual Studio for Mac には、コードの実行とステップ実行に使用できるボタンが 4 つ表示されます。 Visual Studio for Mac では、次のように表示されます。

Buttons to step through code

この 4 つのボタンについて説明します。

  • 再生 - コードの実行が開始され、次のブレークポイントまで実行されます。
  • ステップ オーバー - 次のコード行が実行されます。 次行が関数呼び出しの場合、[ステップ オーバー] をクリックするとその関数が実行され、関数のの次のコード行で停止します。
  • ステップ イン - このボタンの場合も次のコード行が実行されます。 次行が関数呼び出しの場合、[ステップ イン] をクリックすると関数の最初の行で停止するので、関数のデバッグを 1 行ずつ続行できます。 次行が関数ではない場合の動作は、[ステップ オーバー] と同じです。
  • ステップ アウト - 現在の関数が呼び出された行に戻ります。

次に実行されるステートメントの変更

デバッガーが一時停止されているとき、余白にある矢印によって次に実行されるコード行が示されます。 この矢印を選択して別のコード行にドラッグすることで、実行されるステートメントを変更できます。 コード行を右クリックし、コンテキスト メニューから [次のステートメントの設定] を選択する方法でも同じことをできます。

Drag and drop arrow to set next statement

注意

現在の実行行を変更すると、アプリケーションで予期しない動作が発生する可能性があります。 また、次に実行するステートメントを変更できない場合もあります。 たとえば、あるメソッドから別のメソッドに矢印をドラッグしても機能しません。 こうしたサポートされていないケースでは、現在の実行行を変更できなかったことを知らせるダイアログが Visual Studio for Mac に表示されます。

Mono のクラス ライブラリのデバッグ

Xamarin 製品には、Mono のクラス ライブラリのソース コードが付属しているため、デバッガーからのステップ実行にそのソース コードを利用して、内部でどのような処理が実行されているかを検査することができます。

この機能はデバッグ中に消費されるメモリが多いため、既定ではオフです。

この機能を有効にするには、[Visual Studio for Mac] > [ユーザー設定] > [デバッガー] に移動し、次の図のように、"[Step into external code](外部コードにステップ イン)" オプションがオンになっていることを確認します。

Step into external code option

関連項目