Laravel+xdebug 除錯問題

alaraveler發表於2019-07-10

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

相關文章