Contents
1.ubuntu下的安装
通过 pecl 安装
pecl install xdebug
然后将xdebug.so加入php.ini中,注意如果使用的是fpm,则需要加入到fpm下的php.ini,同理cli环境下则需要向cli下的php.ini添加
zend_extension=”/usr/local/php/modules/xdebug.so”
注意:xdebug是zend的拓展,不需要添加extension=xdebug.so
通过编译安装
git clone git://github.com/xdebug/xdebug.git
cd xdebug
phpize
./configure –enable-xdebug
make
make install
2.配置php使用xdebug
xdebug有许多特性。
2.1 通过设置来影响var_dump()
影响var_dump()的属性有:
- xdebug.var_display_max_children,
- xdebug.var_display_max_data
- xdebug.var_display_max_depth
这三个属性的值都是数字类型的。会影响var_dump()函数显示的变量的内容长度和深度。
可以在php.ini做以下设置:
xdebug.var_display_max_depth = 2
xdebug.var_display_max_data = 8
xdebug.var_display_max_children = 3
具体的值可以自己手动调整
另外还有xdebug.cli_color
和xdebug.overload_var_dump
会影响到显示的效果
2.2 堆栈跟踪
演示脚本如下:
<?php
//这个脚本会超时
function foo( a ) {
for (i = 1; i<a['foo']; i++) {
if (i == 500000) xdebug_break();
}
}
set_time_limit(1);
c = new stdClass;c->bar = 100;
a = array(
42 => false, 'foo' => 9121240000000000,c, new stdClass, fopen( '/etc/passwd', 'r' )
);
foo( $a );
?>
我们使用设置
xdebug.collect_params = 1
结果如下:
修改一下设置:
xdebug.collect_params = 3
可以看到浏览器中的报错信息更多了,体现在foo()函数中的参数数量
同样的,我们还可以设置
xdebug.dump_globals = On
xdebug.dump.SERVER = ‘REQUEST_URI’
这样则可以展示一些超全局变量。这里指定了请求的URI
还可以设置
xdebug.show_local_vars = On
来展示程序运行期间的本地变量
2.3 函数跟踪
使用xdebug可以记录所有的函数调用。
测试脚本如下:
<?php
ini_set('xdebug.trace_format','0');
xdebug_start_trace();
str = "Xdebug";
function ret_ord(c )
{
return ord( c );
}
foreach ( str_split(str ) as char )
{
echochar, ": ", ret_ord( $char ), "\n";
}
xdebug_stop_trace();
?>
使用的设置如下:
;代码跟踪日志文件位置,注意要先新建这个/tmp/php_traces/fpm目录,并设置777
xdebug.auto_trace = Off
xdebug.trace_output_dir = /tmp/php_traces/fpm
;代码跟踪日志文件格式
xdebug.trace_output_name = trace.%c.%p
;trace中显示函数的参数值,这个很有用,待会细说
xdebug.collect_params = 3
xdebug.collect_includes = On
xdebug.collect_return = On
xdebug.show_mem_delta = On
xdebug.var_display_max_depth = 2
结果如下:
通过调整xdebug.trace_format
的值可以更改记录的格式。0是人类可读,1是机器可读,2是html
2.4远程调试
这里xdebug中非常好用的一个功能。通过设置,我们可以在IDE中单步调试。下面我会使用vscode来演示一遍。
2.4.1 环境准备
1.首先我们需要为vscode安装xdebug的插件。
2.配置好调试环境
这一步是在vscode左侧调试栏新增配置,然后选择php即可。
3.打上断点,启动调试
4.在浏览器中访问这个页面即可
参考链接
https://xdebug.org/docs/all#default
写的真好
写的真不错啊
商业胡吹