36
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Unity] Unity と Monodevelop を繋いでデバッグしよう!!

Posted at

規模の大きい開発だったり, 途中アサインのプロジェクトの場合
コードが大きくなりすぎて処理を追うのが大変だったりしますよね?

そんなときに必須な機能がデバッギング( debugging )です.

コード中にブレークポイントを置いて処理を止めて
その時の変数の中身をみたり, 呼び出し元に遡ったりするあれです.

今回は, Unity でそれやるメモです.

1. Unity と MonoDevelop を connect する

まずは Unity と MonoDevelop をつなぎます.
Unity と MonoDevelop を開いた状態で MonoDevelop の再生アイコンをクリックします.

スクリーンショット 2014-12-16 22.05.57.png

するとプロセスにアタッチするためのダイアログが表示されます.

Unity Editor(Unity) を選択して右下のアタッチボタンをクリックします.

これで connect 完了です.
ちなみに, 低スペックな PC だと高頻度で失敗します.
失敗するときは, PC を再起動してクリーンな状態でアタッチすると成功したりします.

早く安定してくんないかな...

2. デバッグする

MonoDevelop 上でコードの行数の左をクリックするとブレークポイントという赤い玉が生成されます.
これはブレークポイントといってその場所に処理が来た際に止まってくれという印になります.

breakpoint.png

Unity とアタッチした状態で, Unity のゲーム実行を押すと, このブレークポイントのところで
処理を止めてくれます.

スクリーンショット 2014-12-16 21.48.51.png

ここからがポイントです!
止めたソースコード上で変数にマウスカーソルを持っていくとそのときの中身を見ることができます!!

スクリーンショット 2014-12-16 21.47.48.png

また処理を 1step ずつ進めることができます.

スクリーンショット 2014-12-16 22.00.03.png

左から

  • Run/Pause ... 再生/停止
  • StepOver ... 1行ごとに実行
  • StepIn ... 1行ごとに実行. 関数の場合は内部に飛ぶ.
  • StepOut ... 実行している関数の終わりに飛ぶ.

これで基本的なデバッグができます.

便利なパネル

表示されていない場合は [Toolbar] -> [ビュー] -> [デバッグウィンドウ] でそれぞれ
表示できます.

ローカル変数パネル

ブレーク中の名前空間にあるローカル変数の中身を見ることができます.

スクリーンショット 2014-12-16 21.49.01.png

コールスタックパネル

一番便利なのがこの コールスタック パネル です.
これは止めた位置にどの関数経由で来たのかを遡ってみることができます.

スクリーンショット 2014-12-16 21.50.46.png

基本的にこの ローカル変数 パネルコールスタック パネル さえあれば
大抵の処理は追うことができます.

他にもウォッチやイミディエイトといった便利なものもあるのですが
それはまた次回ということで.

36
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?