始めに
つい最近からUnityでのコーディングでRiderを使い始めました。
このRiderのブレークポイントを使ったデバッグ機能について簡単にメモを残そうと思います。
また、何かしら新しく知った機能があれば追加していく予定です。
ブレークポイントを設定する
Riderでブレークポイントを設定する方法が3つほどあります。
- マウスで一時停止したい行のガター領域をクリック
- 一時停止したい行にカーソルをつけて
F9
- ツールバーのRun -> Toggle Breakpoint -> Line Breakpoint
私は主に1番目の方法でブレークポイントを設定しています。
実際にUnity実行中にブレークポイントで一時停止したい場合は、Riderの右上の虫のボタンを押す or Alt + F5
でデバッグを開始する必要があります。
ブレークポイントで設定できる項目
ブレークポイントの赤い ● を右クリックすることで、一時停止する条件やログの出力など細かい設定が可能です。
また、Moreをクリックすることでブレークポイントウィンドウが開きます。
有効 / 無効の設定
Enabledのチェックボックスでブレークポイントが有効か無効かを設定できます。無効にした場合は、そのブレークポイントで一時停止しません。
無効になったブレークポイントのマークは中が塗りつぶされていない〇になります。
一時停止する条件の設定
Conditionで条件式を書くことで、一時停止する条件を設定できます。
例えば、プログラムが多くのGameObjectにアタッチされている場合はその全てのGameObjectでブレークポイントを設定した行が実行されて、非常に煩わしいことになります。
そのような場合はGameObjectの名前を指定することで、調べたいオブジェクトのみで一時停止させられます。
また、Shift + Enter
で複数の条件式を記述できます。
Conditionのほかに、Hit Count(実行された回数)で一時停止する設定もできます。
基本的な比較に加えて Multiple of
で指定した値の倍数回ブレークポイントを実行した際に一時停止できます。
状態の評価、出力
Logの項目で、Debug Outputにブレークポイントの到達通知、変数の値の評価と出力、スタックトレースなどを出力できます。
- "Breakpoint hit" message : ブレークポイントに到達したことを出力する
- Stack trace : 呼び出し元のツリーを出力する
- Evaluate and log : 出力する文字列を設定できる。変数の値の出力や条件式の記述も可能。
上の設定でブレークポイントに到達した場合は、次のようにDebug Outputに出力されます。
もし、ブレークポイントで一時停止せずにLogの出力のみがしたい場合は Suspend execution のチェックを外すと可能です。
Unityの一時停止ポイントに変換
「Convert to Unity pausepoint」をクリックすることでブログラムの一時停止からUnityの一時停止に変換できます。
このとき、Logの機能のみ使えなくなります。
プログラム一時停止中に出来ること
ブレークポイントに到達したときにもStack traceを確認したり、変数の値を見たり設定したりできます。
変数の値を見る
ブレークポイントに到達したときにプリミティブ型の値はそのまま表示されます。
プリミティブ型だけでなく、配列やリスト、クラスなどのデータも詳しく見ることができます。
また、DebbugerにあるVariable TabでUnityのSceneの状態や変数の値などを確認できます。
任意の処理を実行する(変数の値の変更、メソッドの実行など)
DebuggerにあるImmediate Windowで任意の処理を実行できます。
この機能を使うことで変数の値を変えたり、メソッドを呼び出したりできます。
呼び出し元を調べる
ブレークポイントに至るまでにどのように関数が呼ばれているかを調べられます。
また、クリックすることでコードジャンプできるので呼び出し元の詳細も分かります。
最後に
私が使っている、知っている機能について簡単にまとめました。
また新しく機能について学んだら追加していこうと考えています。
参考
公式のドキュメントの方が詳しくまとめられているので、その他の機能について知りたい方は参考にして下さい。