老法师谈技术 - �PHP单步调试方法(xdebug)
在production环境上面使用单步调试的机会其实不多,但是不妨碍在代码编写阶段,或者代码阅读阶段,单步调试重要性,有时候单步调试一段代码比单纯阅读要效率高很多。
借助于xdebug的库,PHP的单步调试能力非常强大,而且并不依赖于具体客户端,也就是说,无论你是使用PHPStorm或者是Sublime,还是VIM都可以调试PHP程序。鉴于PHP程序都是部署在服务器端,我们这里只讨论remote调试方法。
远程(Remote)调试服务器端PHP程序需要考虑到下面几个方面:
- 在服务器端,配置xdebug支持remote调试,其实也就是让xdebug发送调试信息到制定地址和端口,
- 在客户端(你的PC端),配置xdebug服务器,来接受远端(Remote)的调试信息
- 在客户端映射代码,这样远端的调试信息可以定位到准确的代码位置
无论你是使用何种客户端,都需要考虑上面的三个方面,好下面开始正式的配置信息。
-
服务器端的xdebug配置
首先需要安装xdebug,这里就不展开了,不同的系统安装方法略有不同。其次,配置xdebug,以ubuntu为例配置文件在(/etc/php7/mods-available/xdebug.ini)
end_extension = "xdebug.so" xdebug.remote_autostart = 1 xdebug.remote_enable = 1 xdebug.remote_connect_back = 0 xdebug.idekey=PHPSTORM xdebug.remote_handler = "dbgp" xdebug.remote_host = 10.0.1.4 xdebug.remote_port = 9000 xdebug.remote_log = "/tmp/xdebug/xdebug_remote.log"
idekey是客户端用来认证xdebug发送过来的信息,所以确保两边配置的要完全一致。remote_host需要填写的是xdebug服务器的地址,在这里也就是你的PC机的地址。remote_log非常有用,发现远程调试不工作的时候,log会告诉你那里出了错。
-
客户端xdebug配置
Sublime是常用的PHP编辑器,以Sublime举例来说,需要首先安装xdebug插件,最简单的办法就是使用Package Control,具体如何安装这里就不多说了,跟任何其他插件的安装没有任何区别。Sublime的xdebug的配置信息如下:
{ "path_mapping": { "/WeCenter/" : "/Users/aaa/Mydoc/Code/WeCenter/v319/wecenter-master/" }, "url": "http://192.168.1.24:30080", "ide_key": "PHPSTORM", "port": 9000, }
配置非常简单,唯一要注意的是path mapping,如果设置错误,中断的同时不能定位到具体的代码。点击Tools\xDebug\Start Debugging之后,在浏览器里面刷新页面的时候,应该可以看到如下界面:
PHPStorm是另外一个广泛使用的PHP开发工具,其配置都是以图形界面的方式进行,我们下面开始一步步的配置:
在Preference\Languages & Frameworks\PHP\Servers:
在Preference\Languages & Frameworks\PHP\Debug\DBGp Proxy:
在Preference\Languages & Frameworks\PHP\Debug:
在Run\Edit Configurations\Defaults\PHP Remote Debug:
在上述配置都完成了之后,点击Run\Start Listening on PHP Debug Connecting按钮就可以进行单步调试了。