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は公開されません

※ コメントは承認されると下記に表示されます

コメント一覧

最近の投稿

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

Netlify Formsを使ってブログサイトにコメント機能を追加する方法を調べたので紹介 Netlify FormsはNetlifyに標準機能として用意されているフォーム機能 サーバレスなので別途コメント用にサーバを用意する必要がなくHTMLを埋め込むだけで準備できる

TypeScriptの入門の入門チートシート 型の種類や使い方についてまとめていくだけでなく、 TypeScriptについてや必要性などについてもまとめることでこのページでTypeScriptをざっくり理解できる程度の内容を目指す

カテゴリ一覧

タグ一覧