xdebug-preview
用了一款开源的php应用,在替换原有的memcache为memcacheD的过程中出现了一些问题。因为程序在linux server上,本地又没有php环境,没法很好的debug。于是各种搜下找到了xdebug.在笔者重装系统之前,曾经在windows下使用过xdebug,配合PHPStorm,很是方便。那么Linux下如何使用呢?
1. 下载xdebug: https://xdebug.org/download.php
2. 下载后编译,这里有两点要注意 a: xdebug需要phpize的支持,因为你要检测你是否已经安装了phpize。 b:编译时候除了–prefix还需要指定phpize的路径 –with-php-config=/path/to/php-config。 确定好了上述两点,编译之。
下面是我的编译过程:
./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
make -j4 && make install
1
2
./configure--enable-xdebug--with-php-config=/usr/local/php/bin/php-config
make-j4&&makeinstall
3. 编译后会告诉你生成的文件存储在哪里,找到它,在php中将其启用(我的生成路径在下面,让php启用xdebug扩展见下图)
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
1
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug
其中ext-xdebug.ini,是新创建的,内容如下:
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.trace_output_dir = /tmp/logs ;这里就是xdebug的输出信息目录,不存在就创建一个,记得给写权限
xdebug.trace_output_name = trace.%c.%p
xdebug.collect_params = 4
xdebug.collect_includes = On
xdebug.collect_return = On
xdebug.show_mem_delta = On
1
2
3
4
5
6
7
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.trace_output_dir=/tmp/logs;这里就是xdebug的输出信息目录,不存在就创建一个,记得给写权限
xdebug.trace_output_name=trace.%c.%p
xdebug.collect_params=4
xdebug.collect_includes=On
xdebug.collect_return=On
xdebug.show_mem_delta=On
4. 搞定后重启php-fpm,然后查看phpinfo()中是否已经启用了xdebug扩展,如果一切顺利,会看到下面这些内容
xdebug_phpinfo
5. 在需要调试的代码前后增加xdebug跟踪标记:
xdebug_start_trace();
#your code here1
#your code here2
#your code here3...
xdebug_stop_trace();
1
2
3
4
5
xdebug_start_trace();
#your code here1
#your code here2
#your code here3...
xdebug_stop_trace();
6. 至此运行你的代码,将会看到输入日志了(去/tmp/logs,你会看到类似下图这样的日志,vim or less一下寻找你碰到的问题根源吧。)
xdebug_logs