使用xdebug調試PHP 找出PHP程式的瓶頸_PHP教程

來源:互聯網
上載者:User
xdebug是PHP的一個擴充應用,有了xdebug就可以輕鬆的調試PHP程式,有了它,我們就不用使用 var_dump()print_r()之類的傻瓜調試函數了。
Xdebug則提供了更多的功能,能全方位的對PHP指令碼進行調試。 Xdebug主要的功能如下:

  1. 堆棧追蹤和函數追蹤;
  2. 錯誤資訊;
  3. 記憶體配置;
  4. 剖析php指令碼的資訊;
  5. 程式碼涵蓋範圍分析;
  6. 遠端偵錯分析;

1、Ubuntu搭建xdebug調試環境

安裝Xdebug模組

在終端中使用apt-get安裝xdebug,命令如下

sudo apt-get install php5-dev php-pear
sudo apt-get install php5-xdebug

然後開啟php.ini檔案(例如gedit /etc/php5/apache2/php.ini)。進行如下配置;

;載入xdebug動態連結程式庫
extension=xdebug.so
;xdebug分析檔案輸出路徑
xdebug.profiler_output_dir = “/var/www/xdebug/”
;分析器預設是關閉,調試的時候在url中加入XDEBUG_PROFILE=true即可
xdebug.profiler_enable = Off
xdebug.profiler_enable_trigger = 1

重啟apache,這樣就可以使用xdebug調試PHP了。

2、windows下安裝xdebug

以PHP5.1.4,Windows平台為例(其它PHP版本,其它平台請參看官網文檔):
1. 登入www.xdebug.org,在首頁右側有一個Windows modules,選擇其中的PHP5.1.2+,下載php_xdebug-5.1.2-2.0.0beta6.dll檔案;
2. 將下載的php_xdebug-5.1.2-2.0.0beta6.dll放到C:php5ext目錄,重新命名為php_xdebug.dll;
3. 編輯php.ini,加入下面幾行:

extension=php_xdebug.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir=”I:Projectsxdebug”
xdebug.profiler_output_dir=”I:Projectsxdebug”
xdebug.dump.GET=*
xdebug.show_local_vars=1

具體參數PHP.ini說明參見ubuntu下的注釋。

3、使用xdebug進行PHP調試

xdebug調試變數更加友好

Xdebug重寫了php裡面var_dump()函數。
xdebug裡的var_dump()給變數對象有不同的顏色,顯示類型長度,還可以控制顯示層次,顯示的方式經過格式化,清晰友好。
需要使用此功能,有如下參數需注意。

;是否覆蓋php裡面的函數var_dump();預設是開啟的,值為1;設為0,則關閉;
xdebug.overload_var_dump = 1
;控制數組子項目顯示的大小預設為256
xdebug.var_display_max_children = 256
;控制變數列印的大小,預設為512
xdebug.var_display_max_data = 512
;控制數組和對象元素顯示的層級。預設為3
xdebug.var_display_max_depth = 3

xdebug的堆棧追蹤功能

如果指令碼中出現函數參數不正確,方法重複,語法錯誤等錯誤的時候。xdebug能追蹤其錯誤產生的產生的過程。

參數配置請參考http://xdebug.com/docs/stack_trace;一般來說,很少需要配置。

4、使用xdebug進行指令碼效能測試

在php.ini做如下配置

;預設為0,不開啟xdebug調試器;
xdebug.profiler_enable = 0
;預設為0;這裡設為1,可以通過XDEBUG_PROFILE參數通過GET/POST傳遞
xdebug.profiler_enable_trigger = 1

測試效能結果查看工具

測試完畢後,我們需要查看下測試結果,從而找到PHP的瓶頸。
這裡推薦使用兩款查看工具,ubuntu下可以使用KCachegrind,windows下可以使用WinCacheGrind。具體查看xdebug測試結果工具使用方法自己Google,很簡單。懂點E文就可以看懂的。

5、xdebug使用注意及相關參數說明

xdebug使用注意

如果您在 phpinfo() 的輸出中沒有看到 Xdebug 部分,則 Xdebug 裝入失敗。Apache 錯誤記錄檔會列出原因。常見錯誤包括 zend_extension 的路徑錯誤或者與其他擴充發生衝突。例如,如果需要使用 XCache 和 Xdebug,一定要先裝入 XCache。但是,由於 Xdebug 適於在開發時使用並假定 xdebug.so 的路徑正確,因此需要禁用其他擴充並重試。然後您可以重新啟用擴充以執行其他測試,如緩衝的效果。

Xdebug 網站還有其他一些故障檢修技巧。

xdebug相關參數設定

xdebug.default_enable

類型:布爾型 預設值:On
如果這項設定為On,堆疊追蹤將被預設的顯示在錯誤事件中。你可以通過在代碼中使用xdebug_disable()來禁止堆疊跟蹤的顯示。因為這是xdebug準系統之一,將這項參數設定為On是比較明智的。

精彩內容,請點擊下一頁!

  • 共2頁:
  • 上一頁
  • 1
  • 2
  • 下一頁

http://www.bkjia.com/PHPjc/364700.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/364700.htmlTechArticlexdebug 是PHP的一個擴充應用,有了xdebug就可以輕鬆的調試PHP程式,有了它,我們就不用使用 var_dump() , print_r() 之類的傻瓜調試函數了。 Xd...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.