概要
以前PHPのステップ実行方法まとめについてまとめましたが
XDebugなどを用意するのが面倒と思ったのでphpdbgというものを使ってデバッグができるようにまとめてみました
phpdbgとは
PHP のデバッグについて
PHP5.6より対話型のデバッガーであるphpdbgが同梱されるようになった
gdbみたいにブレークポイントなどを設定してステップ実行ができるので1度インストールができてしまえばXDebugよりも楽にデバッグを行うことができる
インストール方法
PHPに特化したyumリポジトリであるWebTaticを使ってPHP関連のパッケージをインストールする
// ディストリビューション提供のPHPが入っている場合は事前に削除 $ sudo yum remoev php* // CentOS 6.xの場合の導入 $ sudo rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm // PHPの導入 $ sudo yum install \ php56w \ php56w-cli \ php56w-common \ php56w-devel \ php56w-enchant \ php56w-fpm \ php56w-gd \ php56w-intl \ php56w-ldap \ php56w-mbstring \ php56w-mcrypt \ php56w-mysqlnd \ php56w-opcache \ php56w-pdo \ php56w-pear \ php56w-pecl-xdebug \ php56w-pgsql \ php56w-phpdbg \ php56w-process \ php56w-soap \ php56w-tidy \ php56w-xml \ php56w-xmlrpc
確認
$ php --version PHP 5.6.18 (cli) (built: Feb 4 2016 22:33:15) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans $ phpdbg --version phpdbg 0.4.0 (built: Feb 4 2016 22:44:15) PHP 5.6.18, Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans
使ってみる
ソースの用意
$ cat test.php <?php function test($x = 0) { return $x * $x; } echo "start...\n"; for($i=1;$i<=3;$i++) { echo $i . "の2乗は..." . test($i) . "\n"; } echo "...end\n"; ?>
ソースを実行すると…
$ php test.php start... 1の2乗は...1 2の2乗は...4 3の2乗は...9 ...end
さっそくphpdbgを使ってみる
// -e 実行したいphpスクリプト(-e は省略可能) $ phpdbg -e test.php [Welcome to phpdbg, the interactive PHP debugger, v0.4.0] To get help using phpdbg type "help" and press enter [Please report bugs to <http://github.com/krakjoe/phpdbg/issues>] [Attempting compilation of /home/vagrant/test.php] [Success] phpdbg> run start... 1の2乗は...1 2の2乗は...4 3の2乗は...9
ブレークポイントを設定する
// 7行目にbreakpointを設定 phpdbg> b 7 [Breakpoint #0 added at /home/vagrant/test.php:7] phpdbg> run [Breakpoint #0 at /home/vagrant/test.php:7, hits: 1] 00006: >00007: echo "start...\n"; 00008: for($i=1;$i<=3;$i++) { 00009: echo $i . "の2乗は..." . test($i) . "\n"; // s: シングルステップ phpdbg> s 00007: echo "start...\n"; >00008: for($i=1;$i<=3;$i++) { 00009: echo $i . "の2乗は..." . test($i) . "\n"; 00010: }
ソースの表示
// 何行表示させるか phpdbg> list 4 00008: for($i=1;$i<=3;$i++) { 00009: echo $i . "の2乗は..." . test($i) . "\n"; 00010: } 00011: echo "...end\n"; 00012:
変数の中身を表示
phpdbg> s 00008: for($i=1;$i<=3;$i++) { >00009: echo $i . "の2乗は..." . test($i) . "\n"; 00010: } 00011: echo "...end\n"; phpdbg> ev $i 1
コメントを書く
コメント一覧