2019/05/07
vimでdebug

はじめに
  前々回の投稿で扱ったデバッガをvim(CLI)にて再現しました。
普段はIDEでなくvimで作業するため
実運用的にこちらを採用していきます。
普段はIDEでなくvimで作業するため
実運用的にこちらを採用していきます。
  他のブログで紹介されているものと特に異なるのが
  【vimを起動する環境とPHPを起動する環境が同じ】
  という点にご留意ください。(一応同条件のものは少数だが確認しました)
良かった点
- ツールの行き来が無いので無駄な作業が減る
- 慣れてるvimの操作の分めちゃくちゃ速い
微妙, 悪かった点
- vim内部でダイナミックにpythonを実行できるようコンパイルし直し
- 独自のdbgpというプロトコルを認識する必要がある
- IDEと違ってnginxのポートと重複しちゃだめ(?)
最後の点で恥ずかしながら苦戦を強いられました。
Chromeにアドオンの導入
  今回使用するブラウザとしてChromeを挙げます。
こちらからダウンロードしてインストール。
  拡張機能の設定から”Xdebug helper”のオプションに進み
  “IDE key”のところを”others”と任意の文字列を設定します。
  ここでは”VIM_DEBUG”としました。

  以上でブラウザの設定は終わり。
XDebugの導入
  いつもの環境はremi-php56のPHP 5.6をインストールしているので
		
		
			
			
			
			
				
			
		
		
			
			
			
			
				
			
		
| 1 | yum install -y --enablerepo=remi-php56 php-xdebug | 
にてインストール完了。
  自動的に /etc/php.d/15-xdebug.ini が生成されるので
  以下の部分をコメントインし指定の値として設定後、再起動する。
| 1 2 3 4 5 |   xdebug.remote_enable=on   xdebug.remote_handler=dbgp   xdebug.remote_host=localhost   xdebug.remote_port=9005   xdebug.remote_autostart=1 | 
  最初ポートを9000にて検証していたが
  nginxにて既に使っていてLISTEN出来なかった?ため9005に変更。
あとはphp-fpmを再起動すれば終わり。
vimの設定
  まずはvimの再コンパイルから。
コンパイル時のオプションに以下を追加してmake。
		
		
			
			
			
			
				
			
		
オプションはpython2.6と3.6がインストールされている一ケース。
		
		
			
			
			
			
				
			
		
で +python/dyn +python3/dyn が表示されていればOK.
		
			
			
			
			
				
			
		
		
			
			
			
			
				
			
		
コンパイル時のオプションに以下を追加してmake。
| 1 | --with-python-config-dir=/usr/lib/python2.6/config --with-python3-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu --enable-python3interp=dynamic --enable-pythoninterp=dynamic | 
オプションはpython2.6と3.6がインストールされている一ケース。
| 1 | vim --version | 
で +python/dyn +python3/dyn が表示されていればOK.
次にプラグインのインストール
| 1 | NeoBundle 'joonty/vdebug' | 
ポート等は以下の設定で上書き更新出来る。
  表示周りやキーマップの設定もカスタマイズ可。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |   let g:vdebug_options= {             \    "port" : 9005,             \    "server" : '127.0.0.1',             \    "timeout" : 20,             \    "on_close" : 'detach',             \    "break_on_open" : 1,             \    "ide_key" : '',             \    "debug_window_level" : 0,             \    "debug_file_level" : 0,             \    "debug_file" : "",             \    "watch_window_style" : 'expanded',             \    "marker_default" : '⬦',             \    "marker_closed_tree" : '▸',             \    "marker_open_tree" : '▾',             \    "remote_path" : "",             \    "local_path" : "",             \}   let g:vdebug_options["break_on_open"] = 0 | 
  編集するvimに対して実行されるPHP(もといxdebug)が同じ環境なので
  serverオプションは127.0.0.1となる。
vimの設定はこれにて終わり
Author Profile

スターフィールド編集部
SHARE




