首先是必要元件的安裝。
有三個,vim的DBGp外掛程式,php的xdebug擴充,Chrome瀏覽器的xdebug helper擴充。
一: vim 安裝 dbgp client 外掛程式 下載 DBGp client
$ cd ~/.vim/$ wget http://www.vim.org/scripts/download_script.php?src_id=7285 -O debugger.zip$ unzip debugger.zip
二:PHP安裝xdebug擴充
具體安裝方法就不講了,網上例子很多. 官方安裝說明 .
我把我的配置資訊貼出來:
[Xdebug]zend_extension="/home/s/apps/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"xdebug.profiler_enable=0 ;開啟profilexdebug.profiler_enable_trigger=1 ;使用觸發器開啟profilexdebug.profiler_output_dir="/home/s/logs/xdebugLog"xdebug.auto_trace=0 ;開啟tracexdebug.trace_enable_trigger=1 ;使用觸發器開啟tracexdebug.trace_output_dir="/home/s/logs/xdebugLog"xdebug.cli_color=1xdebug.collect_params=2xdebug.collect_return=on ;remote debug ;開啟遠端偵錯xdebug.remote_enable=1xdebug.remote_autostart=Offxdebug.remote_port=9000 ;遠程連接埠,不是你web服務的連接埠,如果沒有衝突,一般不用修改。
其中需要注意的是有注釋的地方,不自動開啟profile和trace,因為這樣每次請求都會儲存相應資訊,會把磁碟爆掉的。把觸發器開啟,這樣,只有在請求的時候帶特定資訊的時候,才會記錄相應的效能資訊。觸發器的實現機制是:在請求時,如果GET/POST/COOKIE資訊中包含特定的變數,會開啟對應的debug,profile或trace,所以我們可以通過在web中訪問頁面時,添加對應的變數來開啟相應的功能。如果每次都自己拼接這個,也挺麻煩,所以會介紹後邊的xdebug helper的chrome擴充,想開啟任何一個功能的時候,點擊一下擴充就可以了。也就是說,這個擴充不是調試必須的,但是會讓你感覺用起來很方便。
三:chrome擴充xdebug helper
地址: https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc
如果在 chrome://apps裡搜尋xdebug helper搜尋不到,記得把你的語言改為 English.
xdebug-helper-introduction20140226142342
xdebug helper兩處配置要注意, IDE Key要注意選擇Other, 值為1,然後儲存。
第二個是domain白名單,如果不希望每個頁面都出調試的debug icon,就把開發時的網域名稱填進來,比如localhost神馬的。其實icon很小,也不太礙事,可以不用設定。
開始使用 :
如果不要debug調試,只是需要記錄profile和trace資訊,看一下效能問題,那麼很簡單,直接在chrome訪問對應的url,會在url右側看到一個xdebg helper 的小icon,點擊後,選擇 profile或trace,再重新整理,就可以在預先設定的目錄見到對應的檔案了。
cachegrind* 是profile的檔案,trace* 是trace的檔案。
在windows下使用WinCacheGrind可以方便的查看profile的資訊。
xdebug_helper_debug_profile_trace
xdebug_output_file_trace_profile
winCacheGrind_output
最後,是 如何開啟遠端偵錯 .
用vim編輯程式檔案,在需要中斷的地方使用:Bp命令打上斷點。然後按F5執行監聽。
這個時候,vim會提示 waiting for a new connection on port 9000 for 5 seconds… ,所以這個時候你需要在5s內向服務端發起帶中斷的請求,在前邊的url地址,我們把xdebug helper的debug選擇上,重新整理頁面,vim就會進入中斷了。右側有相關提示,我們就可以按GDB的方式逐步調試啦。如果沒有安裝xdebug helper,也無所謂,自己手動在url上拼接一個參數: &XDEBUG_SESSION_START=1 也可以開啟遠端偵錯的。
xdebug_remote_debug_how
轉自: http://digdeeply.org/archives/tag/dbgp