記載日:2006/04/17 最終更新日:2007/01/03

TruStudio で PHP デバッグ

デバッグを行えば実行中のプログラムを途中で止めて変数状態を確認したり、1行1行動きを確認しながら実行することもできます。デバッグには様々な便利な機能がありますが、ここでは基本的なデバッグ方法を説明します。

デバッグモードでプログラムを実行する方法は、 TruStudioでデバッグ実行(1/2) で説明しました。ブレークポイントを設定しなかった場合は普通に実行したときと結果は変わりませんでした。ここではブレークポイントを設定してプログラムの実行を途中で止め、変数が変化する動きを確認していきます。

以下で使用している画像が小さく見にくいと感じる場合は、画像をクリックすれば拡大画像が表示されます。

ブレークポイントを設定してデバッグ

ブレークポイントを設定

ブレークポイント設定

プログラムの実行を途中で止めたい場合にはブレークポイントを設定します。

ブレークポイントを設定するには、ソースコードの左側の余白部分をダブルクリックします。余白部分に表示された青い丸印がブレークポイントの目印です。

丸印をダブルクリックすれば設定したブレークポイントを解除することもできます。

 ブレークポイントでプログラムを中断する

デバッグパースペクティブ

設定したブレークポイントにプログラムが到達した場合、左図のダイアログが表示されます。

「TruStudio でデバッグを行うための画面を開くか」くらいに考えればいいと思います。「Yes」を選択して、デバッグを行うための画面 "デバッグパースペクティブ" を開きます。

 
プログラム中断

ブレークポイントを設定した箇所で実行が停止しています。停止行の余白部分には矢印が表示され、行の背景にも色が付きます。

停止した行はまだ実行されていません。

左図は 「$test = 0;」 という行を実行する直前で停止している状態です。

ステップ実行(Step Over)

ステップオーバーブレークポイントで停止した行を1行実行するにはステップ実行(ステップオーバー)を行います。

ステップオーバー(1行実行)を行うには、ツールバーから [Step Over] (左図の赤丸部分)をクリックします。

ステップオーバーで1行実行

次行でストップステップ実行を行った結果、停止行が実行されて次の行で停止しました。

 左図を見ると 「$test = 0;」 の行が実行されて次の「$test++;」 の行で停止しています。(画像をクリックすると拡大表示)

また、 「$test = 0;」 が実行されたため画面右上にある変数の表示も更新されました。"$test=0" と表示されています。

再度ステップオーバーで1行実行

次行でストップ再再度ステップ実行を行い次行で停止させました。

 こんどは 「$test++;」 の行が実行されて次の行で停止しています。これは $test という変数に 1 を加えるプログラムです。

画面右上にある変数の表示も更新されました。$test 変数に 1 足されて 0 から 1 になりました。 "$test=1" と表示されています。

残りを一括実行(Resume 実行)

ブレークポイントステップ実行を組み合わせれば、プログラムの実行を途中で止めて順を追って動作を確認することができます。

デバッグの流れとしては、この様に確認したい場所をピンポイントで確認してから最終的な出力を確認するというのが一般的だと思います。

Resume実行残りの処理を一括して実行したい場合には Resume実行(復帰) を行います。復帰を行うには、ツールバーから [Resume] (左図の赤丸部分)をクリックします。

これで残りのプログラムが全て実行されます。その途中でもし他のブレークポイントが設定されていればそこに到達した時点でプログラムが停止します。

今回は他にブレークポイントを設定していないのでデバッグ実行は終了します。

ステップイン、ステップアウト

ここでは、ステップ実行としてステップオーバーのみを説明しましたが、他にもステップインステップアウトもあります。

停止した行が自分で作成した関数などで、呼び出し先の関数内をデバッグしたい場合はステップイン呼び出し先の関数内のみResume実行して呼び出し元で実行を停止させたい場合は、ステップアウトを選択します。

ステップイン、ステップアウトについては別の機会に取り上げたいと思います。