Laravel+xdebug 调试问题
Laravel+xdebug 调试问题
今天准备重温下laravel,想用xdebug追踪下代码,但遇到一个坎跨不过去
环境是Homestead,里面有laravel项目几个,tp项目数个.xdebug在tp中正常运行,但在laravel中出现一个问题--断点只能在入口文件中生效(index.php)在控制器中的断点无效.
依稀记得几个月前遇到同样的问题,最终是放弃了在laravel中用xdebug 〒_〒
这段时间涨了一点姿势,决定继续琢磨琢磨,想到IDE中不是有步入等调试按钮吗(以前只会断点,f9),试试用f7(step into),依旧失败,但是下面的调试信息给了一条宝贵的信息大意是目录映射(map)有问题,按照提示进入发现是vendor
下框架目录映射问题,于是老老实实地加入目录映射.ok! f7成功步入!
继续在控制器打断点,依旧没有成功???
于是乎在app目录也加上了映射,依旧没效果....
只能继续最终框架代码执行过程看能跟踪到哪儿...
一番最终定位到是在这
vendor\laravel\framework\src\Illuminate\Routing\Controller.php
function callAction($method, $parameters) {
return call_user_func_array([$this, $method], $parameters);
}
- 怀疑是与
call_user_func_array
函数有关?xdebug到这儿就不能继续追踪下去了... - 参考了tp3.2,tp在进入控制器方法是没有用该函数,而是用反射的
invoke
方法调用 - 但一番百度,没有任何结果显示xdebug不能进入
call_user_func_array
调用的方法.. - 有点不甘心,再一次追踪到
call_user_func_array
时发现下方debugger栏显示了和前面遇到的问题一致目录映射,这次直接在app/Http/Controllers
添加映射目录- 成功!
写下这篇解决记录 一上午已经过去了,嗯,几下长记性
本作品采用《CC 协议》,转载必须注明作者和本文链接