PHP使用xdebug进行断点调试

PHP调试跟踪之XDebug使用总结:

Xdebug是一个开源的PHP程序调试工具,可以使用它来调试、跟踪及分析程序运行状态。当然,Xdebug需要结合PHP的编辑工具来打断点、跟踪、调试及分析,比较常用的PHP的Xdebug调试环境:VScode +Xdebug / ZendStudio + Xdebug / VIM+debug/ Sublime+Xdebug / phpstorm + xdebug。

效果

一、安装

1、在php运行环境安装xdebug
添加epel的remi原

rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum安装xdebug

yum install php-pecl-xdebug

也可以尝试使用

pecl install xdebug

使用vim 编辑/etc/php.d/xdebug.ini

zend_extension=/usr/lib64/php/modules/xdebug.so

xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "10.99.99.10" 
;xdebug.remote_autostart = On
;xdebug.remote_connect_back = On
xdebug.remote_port=9000

我这里运行环境和开发ide不在一台电脑上。如在,remote_host可以使用127.0.0.1

2、在IDE上安装调试插件,zendstudio/phpstorm均默认自带不需要安装
sublime text3下安装插件 xdebug-client 或在vscode下安装php debug
下面介绍在vscode下的配置
将目录拖进vscode编辑器后,在调试菜单打开配置会出现luanch.json 如果运行环境和IDE所在环境目录不一样 需要在此配置映射pathMappings 例如:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/PHP/test" : "/Users/sgf/Documents/PHP/test"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

vscode左侧点击蜘蛛图标 上面点击调试即可启动监听9000 然后浏览器刷新访问 即可进入断掉调试。

需要说明的是,php-xdebug扩展中ini配置remote_autostart如果开启的话 每次php访问都会自动进入调试模式,如果不需要可以关闭此项,然后再chrome下安装xdebug-helper插件,插件中可以设置开启或者禁用调试状态,实就是在请求的时候加一个请求头(cookie等方式)告知服务器需要主动开启调试模式。

这种方式也支持对php-cli方式运行的php文件进行调试。

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>