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

Published: 2016年3月14日 by tomsato

概要

以前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&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 &lt;http://github.com/krakjoe/phpdbg/issues&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
 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

参考

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧