一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查

PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查

2021-11-12 16:32wowo_zZ PHP教程

這篇文章主要介紹了PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查,遇到類似問題的同學,可以詳細參考下

最近一直在研究xdebug的用法,主要是因為xdebug對php的開發效率提升確實很大,而卻能幫我們解決很多問題。所以這里就總結下我在配置phpstorm+xdebug環境中遇到的坑,給遇到進不去斷點的朋友一些排查的建議。

運行環境

  • php version 7.1.22
  • xdebug v2.6.0
  • php2016.2;
  • 操作系統:macos 10.12.3

如果遇到無法進入斷點的問題,可以按照以下的步驟進行排查

確認運行web程序的php安裝了xdebug擴展

php永久了,難免會在電腦上多裝幾個版本。這個時候就必須注意,你是否將xdebug安裝到了你需要調試的php版本中,而且要注意,命令行運行的php,不一定是web程序運行的php。例如你安裝了php的5.6和7.1兩個版本,命令行跑的是5.6,但fpm跑的是7.1。這時如果你給5.6安裝xdebug,你運行php -m | grep xdebug確實可以看到xdebug擴展,但是如果想調試7.1運行的web程序,當然是不可能的。所以這里最關鍵一點,就是:

在web程序中輸出phpinfo();exit; ,來確認運行fpm的php中是否安裝了xdubug擴展。

確認xdebug擴展的版本與php版本匹配

如果你安裝了xdebug,但是版本與php不匹配,也是沒辦法正常工作的。如何正確的選擇php對應的xdebug版本。

確認xdebug配置了有效的參數

在phpstorm中調試不同的php程序,需要配置不同的xdebug參數。在remote debug模式下:

必須要設置的參數有:

  • remote_enable=1 開啟遠程調試,不開啟這個參數的話,自然無法remote debug;
  • remote_host=127.0.0.1(本機情況) or remote_connect_back=1,由于這兩個配置項有緊密聯系,所以放在一起講。 首先,如果你指針對單個調試用戶,比如就你自己調試,你可以將remote_host設成你的web程序運行的ip(比如本機,就設置為127.0.0.1),remote_connect_back的值不設置或者設置為0(你不設置默認也是0)。這樣xdebug每次調試的時候會固定連接remote_host指定的ip;但是如果你支持的是多人調試,明顯設置一個remote_host是沒辦法的。這個時候就可以用remote_connect_back=1來設置。當remote_connect_back設置為1的時候,xdebug會根據請求來的ip自動回連,進行調試,從而支持多人調試。同時,這個值設為1的話會使remote_host的設置無效;一般情況下,推薦使用remote_connect_back=1的配置
  • remote_port=9001 php進程與debugclient通信的端口號,必須要設置與phpstorm中的一致,否則無法正常通信;
  • idekey=phpstorm 可以理解為通信用到的口令,必須要設置與phpstorm中的一致;

推薦設置的參數:

remote_autostart=1
默認狀態下,觸發調試需要在url中增加get參數:xdebug_session_start= {xdebug.idekey},如果想自動啟動調試,即不加這個參數也能自動觸發調試,可以將這個值設為1,所以推薦將這個值設為1;

確認phpstorm監聽的端口是xdebug中配置的端口

一定要在此確認xdebug中配置的remote_port(最好使用打印出phpinfo來查看)和phpstorm中配置的一致,否則無法進入調試。

確認phpstorm中的debugclient順利啟動

在phpstorm的工具欄中啟動了remote debug之后,需要檢查是否順利啟動了debugclient進程。這個進程就是phpstorm啟動來進行調試的,所以只需要查看phpstorm是否監聽了我們設置的端口(remote_port)就可以了。例如我指定的端口是9001,那么在mac上可以通過lsof -i tcp:9001命令查看:

PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查

確認phpstorm中的idekey和xdebug中配置的一致

一定要確認phpstorm中配置的idekey和xdebug中配置的idekey是一樣的,否則無法進入調試。

代碼部署在遠程,需要開啟目錄映射

如果你是調試遠程的web程序(即代碼不是部署在本機),必須要設置目錄映射,否則找不到代碼所在,是無法調試的。設置的方法如下圖:

PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查

確認phpstorm和xdebug+php的版本匹配

使用xdebug調試,是php進程通過xdebug擴展和phpstorm的debugclient通信的過程,所以必須這三方在版本上兼容才可以。有的時候碰到一些奇葩的問題,比如我就碰到過可以進入斷點,但是無法單步調試(點擊下一步調試進程就卡死)的情況。這種情況很有可能是phpstorm的版本和xdebug+php的版本不兼容。比如我碰到的這個問題就是因為我用了最新版本的xdebug2.7,但是使用的phpstorm卻是2017.2的版本,而我將xdebug降到2.6之后就可以正常調試了。所以,最好保證phpstorm、xdebug和php的版本協調一致。

總結

如果按照上面說的還是不行,那么就需要查看remote_log,來看下問題到底出在哪了。
這個時候需要在xdebug的配置中增加:xdebug.remote_log=/tmp/xdebug.log來打開remote_log。
配置完成之后,重新啟動fpm,查看phpinfo,確認remote_log生效之后(默認是不啟動remote_log的)之后,調試的時候就可以tail -f /tmp/xdebug.log來查看日志了。舉個例子,我故意將remote_port設置為一個不存在的9999端口,然后查看remote_log的報錯信息:

PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查

從日志中看出,xdebug嘗試去連接127.0.0.1的9999端口,但是失敗了。這樣,我們就能看出到底問題出在哪里,當我們是在找不到配置的問題時,可以借助日志,再結合google、百度,看看能否找到問題的所在。

以上就是phpstorm+xdebug進行emote debug時無法進入斷點問題排查的詳細內容,更多關于php斷點排查的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/hfut_wowo/article/details/77488165

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 果冻传媒天美传媒网址入口 | 俄罗斯一级毛片免费播放 | 亚洲国产午夜 | free性丰满hd性欧美厨房 | 日本成年片高清在线观看 | 亚洲第成色999久久网站 | 色综合久久夜色精品国产 | 爱情岛论坛亚洲品质自拍视频 | 亚洲国产精品久久无套麻豆 | 国产永久免费爽视频在线 | 亚洲午夜精品久久久久久成年 | 精品无码一区二区三区中文字幕 | 女仆掀起蕾丝裙被打屁股作文 | 18美女光胸光屁屁洗澡 | 美女扒开尿口让男生添 漫画 | 91短视频在线免费观看 | 免费看3d小舞被躁视频网站 | 欧美成人乱弄视频 | 欧美国产日韩在线 | jizz 日本亚洲| 91香蕉视频在线播放 | 日韩欧美中文字幕一区二区三区 | 国内精品久久久久久中文字幕 | 国产爽视频 | 亚洲国产成人久久99精品 | 色哟哟哟在线精品观看视频 | 久草色视频 | 日本性爱| 欧美牛逼aa| 美女认你摸 | 糖心视频在线观看 | www.av免费| 精品一区二区三区免费视频 | 国产最强大片免费视频 | 美女叽叽| 午夜电影三级还珠格格 | 女bbbbxxxx视频| 欧美同性猛男videos | 国产精品久久久久久久久免费观看 | avtt在线观看 | 欧美精品久久久亚洲 |