1. ブレークポイントとステップ機能
本記事では、デバッグの際に使用するブレークポイントとステップイン、ステップオーバー、ステップアウトの機能を実際に使用しながら紹介していきます。
2. 使用する機能
・デバッグツール
・ブレークポイント
・ステップイン(Step into)
・ステップオーバー(Step Over)
・ステップアウト(Step Out)
・Script
3. 手順
まず、Roblox Studioを起動します。今回は、テンプレート「Baseplate」を使用します。
ブレークポイント
ブレークポイントの機能を試すための準備をしていきます。
Scriptを追加し、以下のコードを記入します。
print("Hello world!1")
print("Hello world!2")
print("Hello world!3")
print("Hello world!4")
行番号の隣のスペースをクリックすると、赤丸が表示されます。これがブレークポイントとなります。今回はスクリプトの3行目にブレークポイントを設置しました。
この状態で実行してみます。
ブレークポイント手前の2行目までが実行され、3行目で一時停止しています。
以下画像にあるResumeをクリックすると、続きのコードが実行されます。
ブレークポイントを消去する際は、ブレークポイントの赤丸上で右クリックして、「Delete Breakpoint」をクリックすると、消去できます。
このように、ブレークポイントを使用することで、スクリプトの指定の行でコードの実行を一時停止することができます。
以下からは、一時停止後のコードの進め方(ステップイン・ステップオーバー・ステップアウト)の機能をみていきます。
ステップイン
まずは、準備としてスクリプトに以下のコードを記入し、ブレークポイントを1行目に設定します。
local function multiplyNumbers(a, b)
local result = a * b
return result
end
local product = multiplyNumbers(3, 4)
print(product)
上記コードは、関数と関数を呼び出す行と結果を出力する行で成り立っています。今回は、ステップイン・ステップオーバー・ステップアウトがそれぞれどのように関数を扱うのかに着目します。
さっそく、スクリプトを実行し、ブレークポイントで一時停止している状態でステップインをクリックします。
すると、2行目の関数の中のコードではなく、6行目の関数を呼び出す行に移動しました。
再度、ステップインをクリックすると、呼び出された関数の中に移動しました。
関数の中をすべて実行すると、7行目の関数を呼び出した後の行に移動しました。
実際に出力結果を見ると、正しく関数が実行できていることが分かります。
このように、ステップインはコードを1行ずつ順番よく実行し、関数が呼び出されれば、その関数の中に移動する機能だと分かります。
ステップオーバー
次は、ステップオーバーの機能を見てみます。同様に、スクリプトを実行し、ブレークポイントで一時停止している状態でステップオーバーをクリックします。
ステップインと同じように、関数を呼び出す行に移動します。
再度クリックすると、呼び出された関数の中ではなく、そのまま7行目に移動しました、
実行結果を見ると、正しく関数が実行できていることが分かります。
ステップオーバーは、関数の中に移動はせず、関数の実行結果のみ取得して、次の行に移動していることが分かります。
ステップアウト
最後に、ステップアウトの機能を見てみます。ステップアウトの場合は、ブレークポイントを1行目から関数の中の2行目に変更します。
この状態でスクリプトを実行し、関数内に設置したブレークポイントで一時停止していることを確認してステップアウトをクリックします。
すると、関数の外、かつ、その関数を呼び出す行の1つ先の行に移動しました。
実行結果は、前回と同様な結果となり、関数が正しく実行できていることが分かります。
このように、ステップアウトは、現在の関数の呼び出し後の行に移動する機能だと分かります。
4. まとめ
- ブレークポイント
コードの実行を特定の行で一時停止させる。 - ステップイン
コードを一行ずつ実行し、関数の呼び出しがある場合はその関数の中に入る。 - ステップオーバー
関数の中には移動せず、実行結果のみ取得し、次の行へ進む。 - ステップアウト
関数の内部で実行中に、その関数を抜けて関数を呼び出した次の行に移動する。
コメント