2013年12月18日水曜日

xdebugとNetBeansでデバッグしてみる

前回までで、Mac上にXAMPPとNetBeansを使ったPHPの開発環境がだいぶ整いました。
今回はさらにデバッグ環境を作ります。

今回やることは
  1. xdebugをロードする
  2. xdebugの設定をする
  3. デバッグ開始
です!

1. xdebugをロードする

デバッグにはxdebugを使います。
xamppを使ったことで、既にxdebugはextensionsフォルダの下に用意されています。
/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
#no-debug-non-zts-20121212の部分は異なるかもしれません

.soとはunix/linuxで使われる動的ロードするモジュールの拡張子です。
なので、PHP開始時にこれをロードしてあげることから始めます。
いつもどおり、設定はphp.iniに書きます。
/Application/XAMPP/etc/php.ini

動的モジュールを設定するにはextension=“”に指定するのですが、
xdebugはzend_extension=“”でパス指定する必要があります。
詳しくは公式ページのConfigure PHP TO USE XDEBUGをごらんください。

ちなみに、zend_extensionなどの意味は、PHPマニュアルページの「コアphp.iniディレクティブに関する説明」で理解を深めるといいかもです。
付録>php.iniディレクティブ>コアphp.iniディレクティブに関する説明

さて、前置きが長くなりました。
なぜならやることが少ないからです。




■本題

php.iniの920行目あたりから、Dynami Extensionsとコメントがあります。
ここには、動的にロードするモジュール名が色々と書かれていますね。
このブロックの一番下辺りに、xdbug.soを指定してください。

zend_extension=xdebug.so 

/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20121212/までのパスは既に通っているので、フルパスではなくモジュール名だけの指定で大丈夫です。
変更を保存したら、xampp managerでAppatch Web Serverを再起動してください。


■確認方法

ブラウザでhttp://localhostにアクセスしXAMPPを開きます。
メニュー内のphpinfo()を開いて、xdebugに関する情報が表示されていることを確認して下さい。
正常にロードされていれば、こんな感じで表示されます。

2013年12月末現在のxdebug最新バージョンは2.2.3なので、最新バージョンが使えるようになりました。


2. xdebugの設定をする

NetBeansと連携できるように設定を行います。
まずNetBeans> Preferences > phpからデバッグのタブを開いてください。
ここで大切なのは、デバッガポートの番号です。初期設定だと9000番。

サーバー上でも同じポート番号がXdebugのデバッグポートに設定されていれば良いので、xamppのphpinfo()で確認してみます。

ポートは9000番が設定されているのでOK.
ホスト名もlocalhostなので問題なし。
しかし、私の環境ではxdebug.remote_enableがOffになっていたため、このままではデバッグができません。
なので、php.iniに設定を加えます。
先ほどxdebug.soを指定した部分の下に、Module Settingsというコメントがあり、モジュールごとの設定が書かれています。
このブロックの一番下にxdebug用の設定を加えてください。

[XDebug]        
xdebug.remote_enable=1

他にも、プロファイル機能の設定などもありますが今回は割愛。
#実務では重要なところですが…

設定が終わったら、またxampp managerでApatchを再起動。


3. デバッグ開始

あとは、プロジェクトを作って動作確認してみます。
スクリプトを書いたら、行番号をクリックすることでブレークポイントを張ることができ、行が赤くハイライトされます


ブレークポイントを設定したら、デバッグ実行
メニュー >  デバッグ > プロジェクト(xxx)を実行
で、ブレークポイントで止まると、行が緑色にハイライトされます。

これでがデバッグができるようになりました。
めでたしめでたし。


GUIでステップ実行ができたりするのは本当に便利で、IDEの便利さを感じます。
次回は、パッケージ管理ツールのcomposerの設定について書きたいと思います。


2 件のコメント:

  1. 参考にさせていただきました!
    大変助かりました。
    どうもありがとうございました。

    返信削除
    返信
    1. お役にたてて嬉しいです!
      古い情報で申し訳ないので、そのうち更新したいと思います。

      削除