Visual Studio Community 2017によるUnityプログラムのデバッグ手順を記述します。
この記事はUnityのデバッグに絞って記述します(Unity以外でVisual Studioを利用しても変わらないのではありますが)
デバッグでどのような事ができるか
超大まかに書くとこんなことができます
Unityのプログラムの好きな部分で一時停止できます
ブレークポイントと言うものを設定します。
停止時の変数の内容を確認できます
停止中に変数にマウスを当てると変数の内容を確認できます。
一行だけプログラムを実行してまた停止できます
ステップインと言います。もちろん一行実行すると変数の値も変わります。
手順
では、手順の具体例に進みます
ブレークポイントの設定
まず、一時停止したい行にブレークポイントを設定します。
Visual Studioのコードのウィンドウの左端をクリックして赤い丸を付けて下さい。
ブレークポイントを設定した行は茶色になります。(もう一度クリックするとブレークポイントを解除できます)
他の手順でブレークポイントを設定する事も可能です。例えば筆者は[F9]キーで設定しています。
Unityにアタッチする
ビルドしてUnityに接続します。
メニューの[Unityにアタッチ]をクリックして下さい。これでビルドもされます。
ビルドの状況が出力ウィンドウに表示されます
ビルドが終わるとVisual Studioの左下に「準備完了」と表示されます。
これでUnityへのアタッチが完了です。
Unityで「Play」する
通常通りUnityで「Play」します。
いつも通りプログラムが動きますが、先ほどブレークポイントを設定した箇所まで動くとそこでUnityが一時停止します。
この後はVisual Studioの画面で操作します。
Visual Studioでデバッグ
Visual Studioの画面では、先ほどブレークポイントを設定した箇所でプログラムが一時停止しています。この状態で色々デバッグできます。(プログラムの状況を確認できます)
基本の基本
まず基本の基本を順に実行してみます。
変数の内容を見る
変数にマウスカーソルを当てると変数の内容を表示できます。
この例ではtopSegmentという変数の内容はnullだと言っています。
一行実行する
[F11]キーでプログラムを一行だけ実行できます。ステップインと言います。
プログラムが一行だけ実行されて、また一時停止します。
黄色の行が一行下に移りました。この黄色が現在の停止箇所です。
実行すると変数の内容が変わる
1行だけ実行すると変数の内容も変わります。
先ほどの行のtopSegment変数をもう一度マウスでポイントしてみます。
先ほどはtopSegment変数はnullでしたが、何か値が入りました。
GameObjectが何か入ったようです。続けてこのGameObjectの詳細を見てみます。
変数はドリルダウンできる
変数はドリルダウンできます。topSegmentの左端の小さい三角を押してみます。
topSegmentのメンバ変数が表示されました。
(このように、その内訳は?と掘り下げて行くことを「ドリルダウン」といいます。「ドリルダウン」という単語はVisual Studioでのデバッグに限らずデータの分析等でも使われる一般的な用語です)
プログラムの実行を続ける
一時停止状態を解除して通常通りプログラムの実行を続けることができます。
[F5]キーを押して下さい。プログラムが通常通りに動きます。
動いた後にブレークポイントがあった場合、またそこでプログラムが一時停止します(ブレークポイントは複数設定できます。)
デバッグを停止する
メニューの■ボタンでデバッグを停止します。
これでVisual StudioとUnityが切り離されます。
その他のデバッグに有用な手順
上記以外の便利な機能です。
変数を一覧で表示する
[自動]ウインドウには変数が一覧で表示されています。
この例では3つの変数が表示されています。もちろんここでもドリルダウンできます。
画面に[自動]ウィンドウがない場合、次で表示できます。
デバッグ>ウインドウ>自動変数
(MSDNのドキュメント [自動変数] ウィンドウと [ローカル] ウィンドウ)
[自動]以外にも有用なウインドウがあるので試してみて下さい。
[デバッグ]メニュー
[デバッグ]メニューには他にも有用なデバッグ機能がそろっていますので試してみて下さい。
この記事でここまでに書いた次の機能も全部このメニューに揃っています。
「ブレークポイントの設定/解除」
「ステップイン」
「続行」
「デバッグの停止」
使用回数が多いものはショートカットキーを覚えてしまいましょう。
とりあえずは次の3つを覚えると色々楽になります。
[F9] ブレークポイントの設定/解除
[F11] ステップイン
[F5] 実行
付記
この記事はUnityのバージョン2018.2で記述しています。ただ、Unityのバージョンが進んでもこの辺りはほとんど変わらないと思われます。UnityとVisual Studioは別の会社が作ってるものですし、この記事にもUnityの画面はほとんどありませんので。
もちろん、Visual Studioのバージョンが進めば画面や手順は多少変わるでしょう。ですが、Visual Studioの以下の基本的な考え方は20年以上変わってません。
- ブレークポイントで一時停止できる
- 止まってる時点の変数の内容を確認できる
- 一行ずつ進める事ができる、次のブレークポイントまで一気に進める事もできる
ですので、今後も大して変わらないと思われます。20年変わってないという事は「今後も変わらないかもしれない」「この記事の内容を身に着けておくとすんごく長い間有効かもしれない」という事です。お得ですよ!