@原文url:http://www.cnblogs.com/dcb3688/p/4608015.html
@netbeans官方調試php代碼說明:https://netbeans.org/kb/docs/php/debugging_zh_CN.html
個人認為,對有有經驗的程序員,使用echo、print_r()、print_f()、var_dump()等函數足以調試php代碼,如果你不喜歡這樣的話,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_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir ="D:\phpStudy\tmp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
zend_extension="D:\phpStudy\php\php-5.3.29-nts\ext\php_xdebug.dll"
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9001 //這里配置為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引擎的擴展
所以 正確的方法是
zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll
在php.ini 中還要設置
output_buffering = Off
三,配置NetBeans
在NetBeans的 工具-選項-php 中配置(NetBeans版本8.2)
1,工具-選項-常規,web瀏覽器設置為Firefox,無代理,然后測試連接。
2,工具-選項-php-常規,php5解釋器選擇php.exe路徑(例如:D:\phpStudy\php\php-5.3.29-nts\php.exe)
3,工具-選項-php-調試器端口(9001,和上邊php.ini保持一致),會話ID:netbeans-xdebug(和上邊php.ini中的xdebug.idekey保持一致)
在這里面也有個坑
就是調試器端口, 網上一般都是9000,但是有沒有考慮用Nginx的感受,在用nginx作為服務器代理的時候,nginx一般使用的就是9000
這就是為什么我們在配置php的xdebug時候使用9001端口, (php.ini 中的端口要與NetBeans中的調試器端口一致)
會話ID 與 xdebug.idekey 保持一致
不然同樣提示:“等待NetBeans連接xdebug”
四,最好重啟下netbeans,再開始調試。
配置都保存了之后,還是連接失敗的話,就重啟一下netbeans吧。很多人都知道,該了PHP.INI要重啟服務器。但是沒想過netbeans的有些配置改了之后,也要重啟才能生效。
五,開始調試
---注意,只有在netbeans中新建的項目,才可以進行調試。並且進行了如下配置的。
---選擇默認的本地web站點即可
---新建完成導入后,打開項目
打開項目,然后選擇 菜單-調試-調試項目,一般會在默認瀏覽器中彈出http://localhost/weiqing/index.php?XDEBUG_SESSION_START=netbeans-xdebug,后邊紅色參數是xdebug參數,必須要有。
!!!重點!!!如果想單獨調試某個url頁面,在頁面后面加上這個參數?XDEBUG_SESSION_START=netbeans-xdebug或者& XDEBUG_SESSION_START=netbeans-xdebug,然后打開就能開始調試了。
1,經常用到的就是F7(步入,逐行執行腳本,一行一行的調試代碼),F5(繼續,跳的代碼比較多),ctrl+F7(步出,跳出當前函數或者類),具體可以參考官方文檔。
---使用調試器工具欄
2,在下邊可以監視變量的值,和斷點數量。
@注意問題:
1,調試過程中,有時候中間會報錯(套接字異常等),跳出調試。所以調試過程中,在重要地方設置斷點,這樣即使跳出了,也可以重新調試並快速調試到設置斷點地方。
2,有時候會出現等待連接netbeans xdebug或者NetBeans-xdebug正在連接情況,重啟下netbeans即可解決。