php及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客戶端默認的端口。許多客戶端都使用這個端口數字,最好不要去修改這個設置。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章