1. 程式人生 > >netbeans工具使用xdebug斷點調試php源碼

netbeans工具使用xdebug斷點調試php源碼

找到 targe 請求過程 準備工作 text 技術分享 配置文件 手動添加 dir

對有有經驗的程序員,使用echo、print_r()、print_f()、var_dump()等函數足以調試php代碼,如果需要在IDE工具中使用斷點調試,xdebug就是一個非常好的php調試工具。對於不熟悉的代碼,可以用Xdebug一步一步的查看請求過程和代碼執行過程。

準備工作
本地部署的server環境,推薦用phpStudy(內置xdebug),開啟php擴展就可以了,不用單獨下載xdebug。(下載與php版本對應的xdebug:http://www.xdebug.org)

技術分享
配置以下三處
一、配置php.ini,需註意是否是使用集成環境。找到相應的php.ini,例如下邊是phpStudy的php5.3的php.ini,其中黑色部分是系統默認的,紅色是手動添加的。

[XDebug]
xdebug.profiler_output_dir="D:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir="D:\phpStudy\tmp\xdebug"
zend_extension="D:\phpStudy\php\php-5.6.27-nts\ext\php_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_mode=req
; 註意,remote_host的值如果填寫localhost不能用,則填寫127.0.0.1
xdebug.remote_host=127.0.0.1
;
註意,端口和idekey要與netbeans中配置一樣 xdebug.remote_port=9001 xdebug.idekey=netbeans-xdebug

技術分享

二、重啟apache服務器,查看phpinfo()裏邊是否有xdebug,記錄下idekey(我的是netbeans-xdebug)。

技術分享
這一步非常重要,因為坑就在這。。。
如果使用NetBeans調試php時,一直提示“等待NetBeans連接xdebug”,就要使用命令行查看已經加載的模塊,查看xdebug是否正確加載。
在命令行下輸入:php -m

技術分享

當提示:PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0,意思就是xdebug必須加載到zend modules的擴展中。
extension意為基於php引擎的擴展,zend_extension意為基於zend引擎的擴展,所以正確的方法是設置php.ini配置文件:zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll。如果使用phpStudy,啟用xdebug擴展的時候,php.ini配置文件會自動增加這個配置。
在php.ini 中還要設置:output_buffering = Off
  
三、配置NetBeans
在NetBeans的 工具-選項-php 中配置(NetBeans版本8.2)

  1. 工具-選項-php-常規,php5解釋器選擇php.exe路徑(例如:D:\phpStudy\php\php-5.6.27-nts\php.exe)
  2. 工具-選項-php-調試器端口(9001,和上邊php.ini保持一致),會話ID:netbeans-xdebug(和上邊php.ini中的xdebug.idekey保持一致)    

技術分享

在這裏面也有個坑,就是調試器端口,網上一般都是9000,但是有沒有考慮使用Nginx的情況,在用nginx作為服務器代理的時候,nginx一般使用的就是9000端口!這就是為什麽我們在配置php的xdebug時候使用9001端口。
php.ini中的端口和idekey要與NetBeans中的“調試器端口”和“會話ID”保持一致,不然同樣提示:“等待NetBeans連接xdebug”!

四、配置好了之後,重啟下netbeans,再開始調試。
  配置都保存了之後,還是連接失敗的話,就重啟一下netbeans吧。很多都知道,修改了PHP.INI要重啟服務器。但是沒想過netbeans的有些配置改了之後,也要重啟才能生效

五、開始調試
  打開項目(現有項目,無需新建項目),然後選擇 菜單-調試-調試項目,一般會在默認瀏覽器中彈出http://localhost/index.php?XDEBUG_SESSION_START=netbeans-xdebug,後邊紅色參數是xdebug參數,必須要有。  
  !!!重點!!!如果想單獨調試某個url頁面,在頁面後面加上這個參數?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然後打開就能開始調試了。

技術分享

技術分享

參考文章:
NetBeans配置Xdebug 遠程調試PHP (http://blog.csdn.net/21aspnet/article/details/47756651)
關於netbeans斷點調試php的問題 (https://www.oschina.net/question/232352_2209537)
在 NetBeans IDE 中調試 PHP 源代碼 (https://netbeans.org/kb/docs/php/debugging_zh_CN.html)
使用netbeans進行PHP團隊開發和基於xdebug進行多人遠程調試 (http://starlight36.com/post/netbeans-use-for-php-team-with-xdebug)
php斷點調試工具--NetBeans+Xdebug調試php方法 (http://www.cnblogs.com/feichengwulai/articles/6252039.html)

版權聲明:本文采用署名-非商業性使用-相同方式共享(CC BY-NC-SA 3.0 CN)國際許可協議進行許可,轉載請註明作者及出處。
本文標題:netbeans工具使用xdebug斷點調試php源碼
本文鏈接:http://www.cnblogs.com/sochishun/p/7455032.html
本文作者:SoChishun (郵箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
發表日期:2017年8月30日

netbeans工具使用xdebug斷點調試php源碼