WisdomSoft - for your serial experiences.

デバッガによる分析

Unity で実行しているゲームを中断し、実行中の変数の値などを確認する方法を紹介します。

ブレークポイントで検査する

通常のアプリケーション開発で使われる一般的なデバッグ手法と同じように、ブレークポイントを用いて Unity で実行中のゲームを指定のプログラムの位置で停止し、変数の内容や呼び出し順序を調べることが出来ます。ただし、ブレークポイントで停止するには Mono Develop を使わなければならず、Visual Studio ではできません。

ブレークポイントを有効に働かせるには、まず Unity を設定する必要があります。「Edit」メニューの「Preferences」項目を選択し、表示された設定ダイアログの左部から「External Tools」項目を選択します。「External Tools」パネルが表示されるので「External Script Editor」項目を「MonoDevelop (built-in)」に設定し、「Editor Attaching」項目にチェックを入れてください。

図1 外部からのデバッグを許可
図1 外部からのデバッグを許可

続いて、開発用ビルドの設定を行います。「File」メニューの「Build Settings...」項目を選択し、表示されたダイアログ内にある「Platform」リストの中から「PC, Mac & Linux Standalone」項目を選択し、表示された設定パネルから「Development Build」チェックボックスと「Script Debugging」チェックボックスにチェックを入れてください。

図2 開発用ビルドの設定
図2 開発用ビルドの設定

以上で Unity 側の設定は終了です。

MonoDevelop 側では、デバッグ対象となるプロセスを選択します。「Run」メニューから「Attach to Process...」項目を選択してください。

図3 「Attach to Process...」項目
図3

デバッガーから接続可能なプロセスが列挙されているので、デバッグ対象となるプロセスを選択して「Attach」ボタンを押します。通常は Unity 上で実行されているゲームをデバッグすることになりますが、ビルドされた実行ファイルや、Android および iOS で実行されているプロセスでもデバッグできます。

図4 プロセスの選択
図4

以上でブレークポイントでゲームを停止させるための設定は終了です。 Unity のスクリプトを MonoDevelop で開き、エディタの左部にある余白から、停止させたい行をクリックします。赤い丸アイコン(グリフ)が表示されるので、実行時に処理がグリフに到達すると、その場で実行が中断され、デバッガで変数に保持されている値などの状態を確認できます。

図5 Unity で実行中のゲームをブレークポイントで停止する
図5

変数の値の確認程度であれば、前述した Debug.Log() で出力することでも見れますが。複数の変数の内容を確認したい場合や、メソッドの呼び出し順序など、詳細なコード分析には IDE のデバッガが便利です。