概要
以前Perlのステップ実行方法をまとめましたが今回はPHPについてやり方を調べます
準備
前提
ApacheとPHP、Vimが使える状態とする
以下を用意する
- XDebug
- VimプラグインのDBGp
// pecl(,pear)を使うためにinstall $ sudo yum install --enablerepo=remi --enablerepo=remi-php56 php-pear -y // xdebugをinstall $ sudo pecl install xdebug // ファイルを日付でバックアップ $ sudo cp -p /etc/php.ini{,.`date +%Y%m%d`} // php.iniの修正 (echoで出力した内容をそのままファイルに追記する) $ sudo bash -c 'echo -e "\n[zend]\n; zend xdebug\nzend_extension = \"/usr/lib64/php/modules/xdebug.so\"\nxdebug.remote_enable=On" >> /etc/php.ini' // バックアップしたファイルとの差分を見る、php.iniに変更が行われたことを確認 $ diff /etc/php.ini /etc/php.ini.`date +%Y%m%d` 1772,1777d1771 < < [zend] < ; zend xdebug < zend_extension = "/usr/lib64/php/modules/xdebug.so" < xdebug.remote_enable=On // apache restart $ sudo apachectl restart // xdebugが使えるようになったことを確認する $ php -i | grep "xdebug support" xdebug support => enabled // vimのプラグインをダウンロード $ wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=7285 $ unzip debugger.zip $ mkdir -p ~/.vim/plugin $ mv plugin/debugger* ~/.vim/plugin
ステップ実行方法
テストスクリプトを作成する
<?php function sum_num ($a, $b) { $sum = $a + $b; return $sum; } $test = 5; $total = 0; for($i=0; $i<3; $i++) { $total = $total + sum_num($test, $i); } print("result: $total\n");
そのファイルをvimで開く
vimで開いた状態で「F5」を押す (macの場合 fn+F5)
(macでfunction keyの操作が旨く行かない場合は以下を参考にする)
MacのGoogleChromeのデベロッパーツールでF11,F12を有効にする方法
「waiting for a new connection on port 9000 for 5 seconds…」
という文面がWindowの下の方に表示されるはずなのでその間に違うコンソールから以下のコマンドを叩く
$ XDEBUG_CONFIG="idekey=DBGP" XDEBUG_SESSION_START=DBGP php test.php
そうすると「F5」を押したほうのvimの画面がデバッグモードになる
使い方について
<F5>: デバッガの起動 / 次のブレイクポイントまで移動 <F2>: ステップインー (関数の中までステップ実行する) <F3>: ステップオーバー (関数の中までは見ない) <F4>: ステップアウト (関数の外に出る) <F6>: デバッガの停止 <F11>: 全ての変数の中身を表示できる <F12>: カーソル行の変数を表示できる ・任意の行で「:Bp 」とした状態で<F5>を実行するとブレイクポイントを設定できる ・「,e」を押すとWATCH_WINDOWに「/*\{\{\{1*/ => eval:」が表示されてそこに変数を書き込んでエンターを押すと変数の中身が表示される // 例 /*\{\{\{1*/ => eval: $test $command = 'eval'; EVAL_RESULT = (int) 5; /*\}\}\}1*/
参考
最後に
PHP 5.4以上から「phpdbg」というものが使えるらしい
PHP 5.6 に採用されるデバッガ phpdbg を使ってみた
コメントを書く
コメント一覧