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 協議》,轉載必須註明作者和本文連結