したかみ ぶろぐ

Unity成分多め

Riderのブレークポイント機能メモ

始めに

つい最近からUnityでのコーディングでRiderを使い始めました。

このRiderのブレークポイントを使ったデバッグ機能について簡単にメモを残そうと思います。

また、何かしら新しく知った機能があれば追加していく予定です。


ブレークポイントを設定する

Riderでブレークポイントを設定する方法が3つほどあります。

  • マウスで一時停止したい行のガター領域をクリック
  • 一時停止したい行にカーソルをつけて F9
  • ツールバーのRun -> Toggle Breakpoint -> Line Breakpoint

私は主に1番目の方法でブレークポイントを設定しています。

f:id:vxd-naoshi-19961205-maro:20211024161103g:plain


実際にUnity実行中にブレークポイントで一時停止したい場合は、Riderの右上の虫のボタンを押す or Alt + F5デバッグを開始する必要があります。

f:id:vxd-naoshi-19961205-maro:20211024161521p:plain



ブレークポイントで設定できる項目

ブレークポイントの赤い ● を右クリックすることで、一時停止する条件やログの出力など細かい設定が可能です。

また、Moreをクリックすることでブレークポイントウィンドウが開きます。

f:id:vxd-naoshi-19961205-maro:20211024162043p:plain


有効 / 無効の設定

Enabledのチェックボックスブレークポイントが有効か無効かを設定できます。無効にした場合は、そのブレークポイントで一時停止しません。

無効になったブレークポイントのマークは中が塗りつぶされていない〇になります。

f:id:vxd-naoshi-19961205-maro:20211024162846g:plain



一時停止する条件の設定

Conditionで条件式を書くことで、一時停止する条件を設定できます。

例えば、プログラムが多くのGameObjectにアタッチされている場合はその全てのGameObjectでブレークポイントを設定した行が実行されて、非常に煩わしいことになります。

そのような場合はGameObjectの名前を指定することで、調べたいオブジェクトのみで一時停止させられます。

また、Shift + Enter で複数の条件式を記述できます。

f:id:vxd-naoshi-19961205-maro:20211024163801p:plain



Conditionのほかに、Hit Count(実行された回数)で一時停止する設定もできます。

基本的な比較に加えて Multiple of で指定した値の倍数回ブレークポイントを実行した際に一時停止できます。

f:id:vxd-naoshi-19961205-maro:20211024165613p:plain



状態の評価、出力

Logの項目で、Debug Outputにブレークポイントの到達通知、変数の値の評価と出力、スタックトレースなどを出力できます。

  • "Breakpoint hit" message : ブレークポイントに到達したことを出力する
  • Stack trace : 呼び出し元のツリーを出力する
  • Evaluate and log : 出力する文字列を設定できる。変数の値の出力や条件式の記述も可能。

f:id:vxd-naoshi-19961205-maro:20211024172534p:plain



上の設定でブレークポイントに到達した場合は、次のようにDebug Outputに出力されます。

f:id:vxd-naoshi-19961205-maro:20211024172752p:plain


もし、ブレークポイントで一時停止せずにLogの出力のみがしたい場合は Suspend execution のチェックを外すと可能です。

f:id:vxd-naoshi-19961205-maro:20211024173351p:plain



Unityの一時停止ポイントに変換

「Convert to Unity pausepoint」をクリックすることでブログラムの一時停止からUnityの一時停止に変換できます。

このとき、Logの機能のみ使えなくなります。

f:id:vxd-naoshi-19961205-maro:20211024173728p:plain



プログラム一時停止中に出来ること

ブレークポイントに到達したときにもStack traceを確認したり、変数の値を見たり設定したりできます。

変数の値を見る

ブレークポイントに到達したときにプリミティブ型の値はそのまま表示されます。

f:id:vxd-naoshi-19961205-maro:20211024183735p:plain


プリミティブ型だけでなく、配列やリスト、クラスなどのデータも詳しく見ることができます。

f:id:vxd-naoshi-19961205-maro:20211024184036g:plain


また、DebbugerにあるVariable TabでUnityのSceneの状態や変数の値などを確認できます。

f:id:vxd-naoshi-19961205-maro:20211024185130p:plain



任意の処理を実行する(変数の値の変更、メソッドの実行など)

DebuggerにあるImmediate Windowで任意の処理を実行できます。

この機能を使うことで変数の値を変えたり、メソッドを呼び出したりできます。

f:id:vxd-naoshi-19961205-maro:20211024185404g:plain



呼び出し元を調べる

ブレークポイントに至るまでにどのように関数が呼ばれているかを調べられます。

また、クリックすることでコードジャンプできるので呼び出し元の詳細も分かります。

f:id:vxd-naoshi-19961205-maro:20211024185927p:plain



最後に

私が使っている、知っている機能について簡単にまとめました。

また新しく機能について学んだら追加していこうと考えています。



参考

公式のドキュメントの方が詳しくまとめられているので、その他の機能について知りたい方は参考にして下さい。

ブレークポイント | JetBrains Rider

中断されたプログラムを調べる | JetBrains Rider

デバッグウィンドウ | JetBrains Rider