Xdebug 安装及使用
http://www.cnblogs.com/yangqi7/p/6555555.html
https://www.cnblogs.com/LWMLWM/p/8251905.html
https://www.cnblogs.com/hld123/p/6478473.html?utm_source=itdadao&utm_medium=referral
//讲解的很详细
https://www.cnblogs.com/grimm/p/6589259.html
5、手动触发记录
请求参数触发
如果配置xdebug.auto_trace=on
的话,你运行任何PHP文件都会产生回溯记录
但有时候你只需要回溯某一个地址的运行轨迹,可以通过设置xdebug.trace_enable_trigger=on
来实现,但前提是要设置xdebug.auto_trace=off
(或者删除这个选项))
配置样本:
xdebug.auto_trace=off
xdebug.trace_enable_trigger=on
xdebug.trace_output_dir="E:\xdebug"
这样你访问/index.php
不会产生回溯记录,但是你如果修改一下URL参数,加上XDEBUG_TRACE
这个参数名,不用参数值,只要有参数名就行了
就是访问这样的/index.php?XDEBUG_TRACE
地址,然后就会产生文件了,这就是通过GET参数触发
而通过POST请求也是这样,如果你的POST参数中带有XDEBUG_TRACE才会有回溯
$.ajax({
url : '/index.php',
type : 'post',
data : {
a : 1,
XDEBUG_TRACE : 11 //这个值随便设置,如果你不设置就不会POST这个字段上去!
}
});
函数触发
在测试前请先确认配置xdebug.auto_trace=off
(关闭自动回溯)
然后找到你要开始追踪回溯的代码位置调用xdebug_start_trace
函数,再在要停止追踪回溯的位置调用xdebug_stop_trace
函数,这样就会生成回溯信息,并且是对你开始和结束trace函数之间的代码进行记录,其它无关的代码是不记录的
样例代码:
$str = 'abc';
$str1 = substr($str, 0, 2);
xx('a', 'b');
function xx($a, $b){
xdebug_start_trace(); //开始记录回溯
$x = array();
array_push($x, $a);
print(222);
array_push($x, $b);
xdebug_stop_trace(); //结束记录回溯
yy();
return $x;
}
function yy(){
print_r(123);
}
并且要注意,通过函数触发的话并不需要什么配置,你只要开启了扩展就可以,就是只保留zend_extension="xdebug.dll"
就可以,其它xdebug的相关配置可以完全不配置,如果有文件名定制需求就再保留xdebug.trace_output_name
选项就足够了
然而如果你开启了xdebug.auto_trace
其实相当于让PHP启动时就自动执行xdebug_start_trace函数,于是会报错说这个函数已经执行过了,所以为避免麻烦请不要开启xdebug_start_trace
这个调试更加精准,因为如果整个运行周期都回溯下来,起码有成千上万行,查找成为了艰难的事情
而函数触发时就缩小了你需要的范围,查找就快捷了很多!
phpstorm 中 Xdebug 的配置
前言
php是脚本型程序 每次出错都要手动exit断点程序不是很方便
哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试。下面将我个人的安装经历分享给大家。
运行环境 Windows 、lamp、phpstorm 、chrome (配置方法一样 Ubuntu也通用)
一、首先安装xdebug
安装xdebug比较简单 ,运行php -i >phpinfo.txt 或者 echo phpinfo();将全部信息贴到https://xdebug.org/wizard.php这个网站提示的文本域中点击
如下图红色的框是网站提示的安装步骤,黄色的框是我已安装的信息(可以忽略)。补充在编辑php.ini文件的时候多添加几行
[XDebug]
xdebug.profiler_output_dir="F:\phpStoudy\PHPTutorial\tmp\xdebug"
xdebug.trace_output_dir="F:\phpStoudy\PHPTutorial\tmp\xdebug"
zend_extension="F:/phpStoudy/PHPTutorial/php/php-5.6.27-nts/ext/php_xdebug.dll"
;允许收集传递给函数的参数变量
xdebug.collect_params=on
;允许收集函数调用的返回值
xdebug.collect_return=on
;启用代码自动跟踪
xdebug.auto_trace=on
;性能优化,本文用不到,选择关闭(不关闭,会以约每分钟几百M的速度产生大量日志文件,用不上一天你的硬盘就哭了)
xdebug.profiler_enable = Off //关掉性能检测分析
;指定性能分析信息文件的名称
xdebug.profiler_output_name = cachegrind.out.%t.%p
;远程端口,指phpstorm配置的端口
xdebug.remote_port=10000
;指定远程调试的处理协议
xdebug.remote_handler = "dbgp"
;是否允许远程终端,这个必须开启
xdebug.remote_enable = on
;远程IP地址,就算你phpstorm所在的IP。如果你是在本地的话直接写127.0.0.1就可以了
xdebug.remote_host=127.0.0.1
xdebug.idekey = PHPSTORM //这里是调试器的关键字
二、安装chrome xdebug helper插件
打开 chrome的webstore搜索 xdebug 我已经添加了。需要FQ 可以下个vpn 蓝灯 慕风都可以 或者配置host
安装完之后 浏览器会有一个小甲虫右击点击选项 选择phpstorm 点击save退出
备注:
安装完 可以打印phpinfo 查看xdebug信息 ,或者php -v 查看下有没有xdebug信息
三、配置phpstorm
1、php设置 选择自己的php版本
菜单栏 file->setting->Languages&Frameworks->php
选择当前php版本的的php.exe的位置
2、设置Servers
3 设置debug 勾选一下 会忽略端口冲突等信息
4下拉选择 Edit Configurations,配置服务器信息,添加项目调试开发地址
填写网站的访问地址
然后点击ok这步就好了
5 打开Tools->deployment->Configuration
弹出一下deployment窗口
配置好了点击OK即可
配置完后可以点击 Web server root URL: 输入框后面的 Open 试试看是不是可以弹出这个网址,假如弹出了表示配置成功,然后点击OK完成这一步的配置。
[注意]:配置完phpstorm后需要重启一下apache才会生效。
四、启用xdebug
1、点击phpstorm右上角的电话 绿色波纹就是开始监听了
2、右击浏览器右上角的小甲虫 选择debug
3、设置断点
4、访问设置断点的控制器 phpstorm会弹出调试信息 可以点 调试下一个断点
五、其他情况说明
1、端口占用(9000 port is busy)
解决方法:更换端口
那就编辑php.ini换个端口对应的 file->setting->php-> debug 也要换掉
重新启动下php 再调试看看。
2、无法映射到服务器文件( file path is not mapped to any file path on server. edit path mappings to fix the problem
)
解决方法:配置项目在服务器的绝对路径