猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Linux

vimを使ってPHPをデバッグする(xdebug+debugger)

投稿日:2013年7月21日 更新日:

以前xdebugのインストールを紹介しました。

このxdebugがインストールされていることが前提です。

WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする

debuggerをインストールする

///usr/local/srcに移動
[root@centos etc]# cd /usr/local/src

//wgetでdebuggerを取得
[root@centos src]# wget http://www.vim.org/scripts/download_script.php?src_id=7285
--15:31:56--  http://www.vim.org/scripts/download_script.php?src_id=7285
www.vim.org をDNSに問いあわせています... 216.34.181.97
www.vim.org|216.34.181.97|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 14853 (15K) [application/octetstream]
Saving to: `debugger.zip'

100%[================================================================================================================================>] 14,853      30.5K/s   in 0.5s

15:31:57 (30.5 KB/s) - `debugger.zip' を保存しました [14853/14853]

//解凍
[root@centos src]# unzip debugger.zip
Archive:  debugger.zip
   creating: plugin/
  inflating: plugin/.DS_Store
   creating: __MACOSX/
   creating: __MACOSX/plugin/
  inflating: __MACOSX/plugin/._.DS_Store
  inflating: plugin/debugger.py
  inflating: plugin/debugger.vim

//ホームディレクトリ配下に.vimディレクトリの作成
[root@centos src]# mkdir ~/.vim/

//ホームディレクトリ配下に/.vim/pluginディレクトリの作成
[root@centos src]# mkdir ~/.vim/plugin/

//解凍したコードを移動
[root@centos src]# mv plugin/debugger* ~/.vim/plugin/

これでphpのコードをvimで開いて下さい。
任意の行に:Bpでブレークポイントが付けられます。

vimを開いた状態でF5キーを押すと
waiting for a new connection on port 9000 for 5 seconds…
と表示されるので、5秒以内にブラウザなどからアクセスします。
アクセスする際は「?XDEBUG_SESSION_START=1」をつけましょう。
http://192.168.xx.xx/…/xxx.php?XDEBUG_SESSION_START=1
といった感じです。

これでデバッグが開始します。

デバッグの方法

デバッグ方法は表示されています。

|     resize                   | [ Normal Mode ]
|     step into                |   ,e  eval
|     step over                |
|     step out                 |
|     run                      | [ Command Mode ]
|     quit debugging           | :Bp toggle breakpoint
|                                  | :Up stack up
|    get all context          | :Dn stack down
|    get property at cursor   |

step into (ステップイン)
step over (ステップオーバー)
step out (ステップアウト)
run (実行)
がよく使用するでしょう。
「,e」と入力するとフォーカスがevaluateに移動するので、「$xx」と変数名入力すると内容が表示されます。

vimの画面分割ですが
contrlを押しながらwwでカーソルを次のウィンドウへ移動
ZZ(シフトを押しながらzz)で分割ウィンドウを閉じる
一発で全ての画面から抜けるときは:qa!
となります。

おまけですが、vim の画面を分割するのは
:sp 上下分割
:vs 左右分割
となります。

ステップ実行ができるので遷移が分かりやすいですし、変数も見れます。
linuxだけで完結しているデバッグなので便利ですね! :x002:

Gooleアドセンス用336

Gooleアドセンス用336

-Linux
-

執筆者:

関連記事

linux

SSHのログインが遅い

感じたことが無いとは言わせまん :x002: 基本的にはSSHでアクセスしようとしているクライアントの名前解決ができずに時間がかかっているだけdす。 以下対応策です。 INDEX1 hostsの設定2 …

linux

fuserでファイルやソケットを使用しているプロセスを特定する

linuxでもプロセスを特定したい場合はあります。 fuseコマンドで確認できます。特にmaount関連は便利です。 オプション -a コマンドラインで渡されたすべてのファイルを表示する。 -k 指定 …

mysql

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.x.xx’ (13)

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13) はSELinuxによる接続 …

linux

vmware上のCentOSに仮想化ソフトxenをインストールする(4)ネットワークの構築

INDEX1 概要2 libvirtを使用したネットワーク構築方法3 xenbrを使用したネットワークの構築方法 概要 仮想OS用のネットワークの構築方法です。 libvirtを使用する方法とxenb …

linux

169.254.0.0 は APIPA (Automatic Private IP Addressing)

routeコマンドをしてみて下さい。 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use …