ずっと自分はPHPでvar_dumpを唱えていました。
でも、もうvar_dump()って唱えたくないんですよ。
間違えて
// var_dump($hgoe);
とかコミットしてしまうじゃあないですか・・・・
だしタイプするのが、億劫なんですよ。
vdebugがあるじゃないか!!!
元々はVim + Vdebug + Xdebug でPHPのリモートデバッグを読んで
「vimでもbreakpoint貼れるのかー。じゃあやってみよう」
ということでやってみた時のメモになります。
環境
- Scientific Linux 6.4
- CentOS 6.4
参考にしたサイト
事前準備に必要なもの
- vim 7.2 以降(で自分は試した)
- PHP 5.4.32 (5.6.0)でもやった
- 自分はphpenvで実行しています
- PHP extension Xdebug
- phpenvで入れた場合はデフォルトではいっています
- chrome (chromeからvdebugを起動します)
- python 2.6 以上
vim にvdebugをインストールする
NeoBundleでインストールしています
# ~/.vimrc
" PHP debugger
NeoBundle 'joonty/vdebug'
補足: OSの環境がutf-8じゃない方への設定
utf-8なサーバーで実行する場合vdebugがエラーになる可能性があります。
理由はvdebugの各種breakのマーカーなどの設定がutf-8じゃないと認識できない文字列をデフォルトで設定しているからです。
その場合は下記をvimrcに追加してください
# ~/.vimrc
letg:vdebug_force_ascii =1
教えてくれたH.Nさんサンクス!!!
Xdebugの設定の確認
まずはXdebugの設定を確認しましょう
# $PHPENV_HOME/phpenv/versions/{PHPバージョン}/lib64/php/modules/xdebug.soEnablexdebugextensionmodulezend_extension=/usr/lib/phpenv/versions/5.4.32/lib64/php/modules/xdebug.so# 最低限これだけ入れておいてください;seehttp://xdebug.org/docs/all_settingshtml_errors=onxdebug.remote_enable=onxdebug.remote_handler=dbgpxdebug.remote_host=localhostxdebug.remote_port=9000
chrome-extensionのXdebug-helperを入手
ブラウザでリロードしてXDebug用のcookie発行しての実行になります
joonty/vdebug自体はこれがなくても動作すると思いますが、自分はよくわかりませんので、そこらへんはすごい人にお任せします
おそらく下記の設定をすればいけると思いますが、私は試していませんので割愛させていただきます。
#vim で help vdebugとするとみえる
r something similar (version may differ). You are technically ready to go, but
there's one extra step that I like to do to make command line debugging niceand quick. I create a bash script called "php-xdebug", which automaticallystarts the debugger engine. The script looks like this (unix only): >#!/bin/bashexport XDEBUG_CONFIG="idekey=xdebug"/usr/bin/php "$@"<Run "chmod +x" on the file and put it somewhere in your $PATH list, and you canthen use this instead of php when debugging. For instance, instead of "phpmyscript.php", run "php-xdebug myscript.php" to start the debugger session.You are now officially ready to start debugging with PHP. However, if you've
become unstuck at any point then there are plenty of Google tutorials on
setting up Xdebug, or you can email me and I'll do my best to help.
Xdebug-helperのオプション設定をする
一人でローカル環境を構築する場合はこの設定は必要ありません。
複数人でデバックする場合は個々にIDE_KEYを設定しないと上手くdebugできません。
chromeから
chrome://extensions/
でxdebug-helperのオプションをクリックしてください
IDE_KEYを設定する
デフォルトはXDEBUG_ECLIPSEです。
IDE_KEY項目のオプションを
- other
- 任意のIDE_KEY
を設定してください
これで前準備は完了です。
起動してみる
vimでファイルを開いてbreakpointを貼りたいところで fn + F10
をおしてください
その後 fn + F5
を押すとdebugの待ち状態になります。
デフォルトだと20秒間何もアクションが起こらないとErrorになります。
(きっとどこかで設定できるはず)
chrome側のxdebug-helperを Debug
に変更する
xdebug-helperのモードを「Debug」にします
これでchromeのブラウザをリロードしてください
下記のような感じになります。
vdebugの使い方
基本は Vim + Vdebug + Xdebug でPHPのリモートデバッグに記載されていますのでこちらを見てください。
コマンド | 説明 |
---|---|
fn + F10 | breakpointを貼る |
fn + F5 | デバッガの起動 |
fn + F3 | ステップイン |
fn + F2 | ステップアウト |
fn + F9 | fn + F10 で設定した場所までの実行 |
fn + F7 | デバックの終了 (debug画面を :q とかで終了すると次回起動時にエラーになるので注意) |
これでPHPで var_dump()
の魔法を唱えなくてもいい第一歩が踏み出せそうです。