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

参考

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧