使用了一段時間的Neovim(Vim的一個變種)之后脉让,發(fā)現(xiàn)再也離不開了妓蛮,目前已經(jīng)把Neovim作為主力開發(fā)工具了宅楞。剛也把PHP的調(diào)試功能給配置上了脖卖,這里記錄一下在Neovim中配置PHP調(diào)試的整個過程幻妓,也適用于Vim蹦误。
我的開發(fā)環(huán)境如下
- 編程環(huán)境:
- Macbook Air(macOS Mojave 10.14.1)
- iTerm2(3.2.9)
- Neovim(0.3.7)
- 代碼運行環(huán)境:
- Virtualbox(6.0.6)
- Vagrant(2.2.5)
- Ubuntu(18.04)
- Nginx(1.14.0)
- PHP(php-fpm 7.2.19)
安裝Xdebug
這里是Xdebug官方的安裝指南:Xdebug Installation,由于我的PHP運行環(huán)境是搭建在Ubuntu虛擬機里的肉津,所以可以直接使用Ubuntu的包管理工具來安裝Xdebug强胰。
# 先更新一下包索引
sudo apt update
sudo apt install php-xdebug
安裝好之后,Xdebug會在目錄下/usr/lib/php/20170718/
目錄下生成一個xdebug.so
二進制文件妹沙,同時在/etc/php/7.2/fpm/conf.d/
中生成一個ini配置文件:20-xdebug.ini
偶洋。后面我們會在這個配置文件中添加自定義的配置來實現(xiàn)遠程調(diào)試。
在Nginx的網(wǎng)站目錄下創(chuàng)建了一個index.php
距糖,寫一行代碼來檢測Xdebug是否安裝正確了玄窝。
<?php phpinfo() ?>
如圖所示牵寺,我們的Xdebug已經(jīng)安裝上了。
添加自定義的Xdebug配置
Xdebug的配置文件是/etc/php/7.2/fpm/conf.d/20-xdebug.ini
恩脂,打開這個文件添加下面著幾行配置帽氓。
zend_extension=/usr/lib/php/20170718/xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_port=9000
第一行指定擴展xdebug.so
文件的位置,注意是zend_extension
而不是extension
俩块。
xdebug.remote_enable=1
開啟遠程調(diào)試黎休。由于我是在Mac主機上調(diào)試Ubuntu虛擬機中的代碼,相當(dāng)于是兩臺電腦玉凯,因此需要開啟Xdebug的遠程調(diào)試势腮。
Xdebug遠程調(diào)試需要知道調(diào)試主機的IP地址。有兩種方案可以指定漫仆,第一個方案是通過xdebug.remote_host=<your-network-ip>
來指定一個固定的IP地址捎拯。這種方法把IP固定死了,只能單人調(diào)試盲厌。第二個方案就是上面的設(shè)置xdebug.remote_connect_back=1
署照,指定調(diào)試的IP地址即發(fā)起網(wǎng)頁請求的主機的IP地址,這樣任何發(fā)起網(wǎng)頁請求的主機都可以調(diào)試代碼吗浩。這樣在開發(fā)環(huán)境中比較方便藤树。
xdebug.remote_port=9000
指定了Mac主機上用于監(jiān)聽Xdebug發(fā)來的調(diào)試信號的端口。
在Vim/Neovim中安裝Vdebug插件
Vdebug提供了在Vim/Neovim中調(diào)試代碼的用戶界面和工具拓萌,這里是Vdebug的GitHub網(wǎng)址:vim-vdebug/vdebug岁钓。
Vdebug中使用了Python的代碼,因此要先確保電腦中安裝了Python3微王。同時還要確認一下自己的Vim/Neovim是否支持Python3屡限。Vim可以在命令欄中輸入:versioin
,查看輸出中是否有+python3
炕倘,Neovim則是在命令欄中輸入:checkhealth
钧大,若輸出中有類似- OK: Python3.6.1+ was successful
則說明支持Python3。
我使用Vim/Neovim插件管理器是vim-plug罩旋,所以只需要在插件列表中添加如下一行即可安裝Vdebug啊央。
Plug 'vim-vdebug/vdebug'
接著讓Vim/Neovim重新加載一下配置文件。
:source ~/.vimrc " Vim用戶運行
- - - - OR - - - -
:source ~/.config/nvim/init.vim “ Neovim用戶運行
執(zhí)行vim-plug插件的安裝命令
:PlugInstall
安裝好Vdebug之后我們還要Vim/Neovim的配置文件中配置一下調(diào)試參數(shù)涨醋,在Vim/Neovim配置文件的最后面添加如下配置:
if !exists('g:vdebug_options')
let g:vdebug_options = {}
endif
let g:vdebug_options.port = 9000
let g:vdebug_options.path_maps = { "/var/www": "/Users/xiaer/program/www" }
let g:vdebug_options.break_on_open = 0
讓Vdebug去監(jiān)聽Mac主機的9000端口瓜饥,一旦9000端口收到Xdebug發(fā)來的信息就可以開始調(diào)試。path_maps
是將Ubuntu虛擬機上的代碼和Mac主機的代碼映射好浴骂,這樣就可以通過本地代碼調(diào)試遠程的代碼乓土。當(dāng)break_on_open
設(shè)置為1的時候每一次調(diào)試都會在第一行的停一下,設(shè)置為0就會直接運行到第一個斷點才暫停。
修改了Vim/Neovim的配置文件要記得再source一下才會生效哦趣苏!
開始調(diào)試
在Vim/Neovim中使用Vdebug調(diào)試的過程如下:
- 在需要調(diào)試的地方打一個斷點(默認快捷鍵是F10)狡相。
- 然后啟動Vdebug調(diào)試(默認快捷鍵是F5),Vdebug會監(jiān)聽Mac主機的9000端口食磕。
- 接著在瀏覽器地址欄輸入要調(diào)試的網(wǎng)頁鏈接尽棕,并在鏈接的后面加上一個
XDEBUG_SESSION_START=1
請求參數(shù)彬伦,比如原鏈接是http://localhost/posts
,那么添加調(diào)試參數(shù)后就是http://localhost/posts?XDEBUG_SESSION_START=1
媚朦。 - 如果沒有意外的話現(xiàn)在程序已經(jīng)停在你第一個斷點的位置了。
- 調(diào)試完成之后询张,退出調(diào)試模式的默認快捷鍵是F6。
Vim/Neovim的PHP調(diào)試配置到這里就完成了浙炼。