Xdebug的安裝與使用

  php下搭配使用xdebug是十分好的組合,用於php的調試工做,下面分別介紹之:
1 WINDOWS下的安裝
  下載站點http://www.xdebug.org/
要肯定使用一個跟你的PHP配合的版本才行,好比xdebug中的5。2系列版本是跟5.2
的php搭配的,5.3系列的跟5.3的PHP搭配的。目前的版本是2。1,而後你會發現
有相應的線程安全和非安全兩個版本。如何知道下載哪一個版本呢,能夠將你跑
PHPINFO時的顯示出來網頁的源代碼,COPY到
http://www.xdebug.org/find-binary.php中,而後提交,而後XDEBUG爲告訴你
應該下載哪一個版本了

   將下載的文件放到d:\php\ext目錄,重命名爲php_xdebug.dll。
而後修改PHP。INI以下:
[Xdebug]
zend_extension="D:\php\ext\php_xdebug.dll"
xdebug.profiler_output_dir="D:\php53\xdebug"
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=1
xdebug.default_enable=On
xdebug.show_exception_trace=On
xdebug.show_local_vars=1
xdebug.max_nesting_level=50
xdebug.var_display_max_depth=6
xdebug.dump_once=On
xdebug.dump_globals=On
xdebug.dump_undefined=On
xdebug.dump.REQUEST=*
xdebug.dump.SERVER=REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT
xdebug.trace_output_dir="D:\php53\xdebug"

注意要創建一個xdebug目錄放調試輸出的文件。
從新啓動apache,在phpinfo中就能夠看到有關XDEBUG的部分了

2 LINUX下的安裝
  tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/
 
注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不一樣的PHP版本路徑不一樣,也不必定要放在該路徑,能夠在zend_extension_ts中自行指定xdebug.so所在位置。


3 使用,能夠寫個簡單程序去看效果,好比:
<?php
testXdebug();
function testXdebug() {
      require_once('abc.php');
}
?>
運行後,能夠看到是象JAVA同樣,用堆棧的方式去輸出錯誤的相關部分的。

4 分析xdbebug下面的輸出文件
   由於這個目錄下的文件比較難理解,所以能夠下載工具來分析之,好比:
KCacheGrind(適用於Linux)、WinCacheGrind(適用於Windows)和Webgrind(Web頁面方式)。
  我用的是WinCacheGrind(http://sourceforge.net/projects/wincachegrind)
以後就能夠打開輸出文件來去看了。

5 xdebug的一些配置
xdebug.default_enable
類型:布爾型 默認值:On
若是這項設置爲On,堆棧跟蹤將被默認的顯示在錯誤事件中。你能夠經過在代碼中使用xdebug_disable()來禁止堆疊跟蹤的顯示。由於這是xdebug基本功能之一,將這項參數設置爲On是比較明智的。

xdebug.max_nesting_level
類型:整型 默認值:100
The value of this setting is the maximum level of nested functions that are allowed before the script will be aborted.
限制無限遞歸的訪問深度。這項參數設置的值是腳本失敗前所容許的嵌套程序的最大訪問深度。

xdebug.dump_globals
類型:布爾型 默認值:1
限制是否顯示被xdebug.dump.*設置定義的超全局變量的值
例如,xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT 將打印 PHP 超全局變量 $_SERVER['REQUEST_METHOD']、$_SERVER['REQUEST_URI'] 和 $_SERVER['HTTP_USER_AGENT']。

xdebug.dump_once
類型:布爾型 默認值:1
限制是否超全局變量的值應該轉儲在全部出錯環境(設置爲Off時)或僅僅在開始的地方(設置爲On時)

xdebug.dump_undefined
類型:布爾型 默認值:0
若是你想從超全局變量中轉儲未定義的值,你應該把這個參數設置成On,不然就設置成Off

xdebug.show_exception_trace
類型:整型 默認值:0
當這個參數被設置爲1時,即便捕捉到異常,xdebug仍將強制執行異常跟蹤當一個異常出現時。

xdebug.show_local_vars
類型:整型 默認值:0
當這個參數被設置爲不等於0時,xdebug在錯環境中所產生的堆棧轉儲還將顯示全部局部變量,包括還沒有初始化的變量在最上面。要注意的是這將產生大量的信息,也所以默認狀況下是關閉的。


xdebug.profiler_append
類型:整型 默認值:0
當這個參數被設置爲1時,文件將不會被追加當一個新的需求到一個相同的文件時(依靠xdebug.profiler_output_name的設置)。相反的設置的話,文件將被附加成一個新文件。

xdebug.profiler_enable
類型:整型 默認值:0
開放xdebug文件的權限,就是在文件輸出目錄中建立文件。那些文件能夠經過KCacheGrind來閱讀來展示你的數據。這個設置不能經過在你的腳本中調用ini_set()來設置。

xdebug.profiler_output_dir
類型:字符串 默認值:/tmp
這個文件是profiler文件輸出寫入的,確信PHP用戶對這個目錄有寫入的權限。這個設置不能經過在你的腳本中調用ini_set()來設置。

xdebug.profiler_output_name
類型:字符串 默認值:cachegrind.out%p
這個設置決定了轉儲跟蹤寫入的文件的名稱。

遠程Debug
相關參數設置
xdebug.remote_autostart
類型:布爾型 默認值:0
通常來講,你須要使用明確的HTTP GET/POST變量來開啓遠程debug。而當這個參數設置爲On,xdebug將常常試圖去開啓一個遠程debug session並試圖去鏈接客戶端,即便GET/POST/COOKIE變量不是當前的。

xdebug.remote_enable
類型:布爾型 默認值:0
這個開關控制xdebug是否應該試着去鏈接一個按照xdebug.remote_host和xdebug.remote_port來設置監聽主機和端口的debug客戶端。

xdebug.remote_host
類型:字符串 默認值:localhost
選擇debug客戶端正在運行的主機,你不只可使用主機名還可使用IP地址

xdebug.remote_port
類型:整型 默認值:9000
這個端口是xdebug試着去鏈接遠程主機的。9000是通常客戶端和被綁定的debug客戶端默認的端口。許多客戶端都使用這個端口數字,最好不要去修改這個設置。php

http://www.studyday.net/2011/06/244apache

1, 下載 Xdebug安全

1 # 下載地址
3   
4 # 尋找和本身所安裝的 php 版本對應的 Xdebug 下載
5 # 對於 Windows 版本的 php 能夠查看 phpinfo() 函數的打印信息, 查找"PHP Extension Build", 看你的 PHP 版本是 VC 幾的,

2, 安裝bash

1 # 安裝說明頁
3   
4 # 對於 Windows 版本, 下載完成後將下載的 dll 文件重命名爲 php_xdebug.dll
5 # 將其複製到 PHP 的擴展目錄中去 (例如: D:\Program Files\EasyPHP-5.3.2i\php\ext\ )

3, 修改 php.inisession

01 # 在 php.ini 尾部增長一段, 改完以後重啓 Web-Server
02 [Xdebug]
03 zend_extension="D:/Program Files/EasyPHP-5.3.2i/php/ext/php_xdebug.dll"
04   
05 xdebug.profiler_enable=on
06 xdebug.trace_output_dir="E:/xdebug"       ;xdebug 的數據文件目錄
07 xdebug.profiler_output_dir="E:/xdebug"    ;xdebug 的數據文件目錄
08 xdebug.max_nesting_level = 10000          ;若是設得過小,函數中有遞歸調用自身次數太多時會報超過最大嵌套數錯
09   
10 xdebug.remote_enable=true                 ;Xdebug容許遠程IDE鏈接
11 xdebug.remote_host=127.0.0.1              ;容許鏈接的zend studio的IP地址
12 xdebug.remote_port=9000                   ;反向鏈接zend studio使用的端口
13 xdebug.remote_handler=dbgp                ;用於zend studio遠程調試的應用層通訊協議

4, 修改 Zend Studio 設置app

1 Window -> Preferences -> PHP -> Debug
2 # 將左側 "Default Settings" 中的 "PHP Debugger" 設置爲 "XDebug"

5, 在項目中新建一個 test.php 文件函數

1 <?php
2 for ($i = 0; $i < 10; $i++) {
3     if ($i==5) {
4         echo 'aa';
5     }
6 }
7 ?>

6, 新建一個 Debug 命令工具

1 # 點擊工具欄上"小蜘蛛"旁邊的小箭頭 -> Debug As -> PHP Web Page
2 # 會跳出 Debug 視圖
3 # 在 "if ($i==5) {" 這一行前面加一個斷點, 就能夠進行單步調試了
相關文章
相關標籤/搜索