phpdbgを使ったステップ実行まとめ

■ 目次

  1. 概要
  2. phpdbgとは
  3. インストール方法
  4. 使ってみる
  5. 参考

■ 概要

以前PHPのステップ実行方法まとめについてまとめましたが
XDebugなどを用意するのが面倒と思ったのでphpdbgというものを使ってデバッグができるようにまとめてみました

■ phpdbgとは

PHP のデバッグについて
PHP5.6より対話型のデバッガーであるphpdbgが同梱されるようになった
gdbみたいにブレークポイントなどを設定してステップ実行ができるので1度インストールができてしまえばXDebugよりも楽にデバッグを行うことができる
phpdbg02

■ インストール方法

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&amp;lt;=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 &amp;lt;http://github.com/krakjoe/phpdbg/issues&amp;gt;]
[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
[L7       0x7f2275deea00 ZEND_ECHO                      C1                   <unused>             <unused>             /home/vagrant/test.php]
start...
[L8       0x7f2275deea30 ZEND_EXT_STMT                  <unused>             <unused>             <unused>             /home/vagrant/test.php]
 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

■ 参考


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です