PHPのステップ実行方法まとめ

Published: 2016年3月5日 by tomsato

概要

PHPのステップ実行方法まとめ

以前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 を使ってみた

コメントを書く

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

※ 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でどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧