2013年6月17日 星期一

PHP 使用 NetBeans + Xdebug 除錯

NetBeans 配合 Xdebug,可以一步一步執行 PHP 的程式碼,方便用來除錯。
環境:win7 + Apache2.2.22 + php5.2.17(VC6 TS) + NetBeans7.1.1

安裝步驟如下
  • 安裝 Xdebug
    1. 先到 http://xdebug.org/download.php 下載合適的 Xdebug 版本。
      我 PHP 是安裝 VC6 TS 版本,所以是下載 "php_xdebug-2.1.2-5.2-vc6.dll"。
    2. 將 "php_xdebug-2.1.2-5.2-vc6.dll" 放到 "php\ext" 目錄底下。
    3. 修改 php.ini 設定檔,新增 Xdebug 設定如下
      (參考 http://wiki.netbeans.org/HowToConfigureXDebug#Get_Xdebug_Sources_and_Install)
      ;xdebug
      zend_extension_ts="php_xdebug-2.1.2-5.2-vc6.dll"
      xdebug.remote_enable=on
      xdebug.remote_host=127.0.0.1  
      xdebug.remote_handler=dbgp
      xdebug.remote_port=9999
      xdebug.overload_var_dump = 0
            
      zend_extension_ts:如果 PHP 不是安裝 TS 版本,則使用 zend_extension

      xdebug.remote_port:是用來跟 Netbeans 連接使用的, Netbeans 預設是 9000,我這邊是設定 9999

      xdebug.overload_var_dump:會將 PHP 的 var_dump() 改成 Xdebug 的版本,但我用不習慣,所以把這個選項關掉。
    4. 重新啟動 Apache,可使用 phpinfo() 看 Xdebug 是否有啟動。也可故意新增一個語法錯誤的 php 程式,用瀏覽器瀏覽看看,如果 Xdebug 已經執行的話,錯誤訊息應該會是彩色的。如下圖:
  • 設定 NetBeans
    1. 開啟 Netbeans 的 「工具」->「選項」->「PHP」->「Debugging」
      裡面的「Debugger Port」改為在 php.ini 設定的 9999,「Session ID」維持 netbeans-xdebug,如下圖
    2. 重新啟動 NetBeans
    3. debug 的方法可參考 https://netbeans.org/kb/docs/php/debugging_zh_CN.html ,有很詳細的說明。
      簡單的用法,
      在「視窗」->「Debugging」->「Variables」 開啟變數查看的視窗。
      開啟 index.php 檔,點擊程式碼行號設定中斷點,
      在 index.php 檔案上按「右鍵」->「debug」,NetBeans 會開啟瀏覽器執行,並停在中斷點,等你一步一步執行,可再變數視窗觀察變數的變化。
      常用快速鍵
      F7:繼續執行下一步
      F8:繼續執行下一步,但不進入函式內部
      Ctrl+F7:跳出函式
      F4:往下一直執行到游標處
其他:
  • 若在 php.ini 加上以下設定,則每個 PHP 程式執行時,都會在 D:\log\xdebug 資料夾,產生 trace 記錄檔。
    xdebug.auto_trace = on 
    xdebug.trace_output_dir = "D:\log\xdebug" 
    

沒有留言:

張貼留言