Xdebug文檔(七) 遠端偵錯,xdebug文檔調試_PHP教程

來源:互聯網
上載者:User

Xdebug文檔(七) 遠端偵錯,xdebug文檔調試


Xdebug提示調試用戶端介面與PHP運行相聯絡。該章節解釋如何設定PHP與xdebug,並推薦一些用戶端。

介紹

Xdebug的遠端偵錯工具允許你檢查資料結構,互動式地穿過和調試你的代碼。該協議已經開放,名叫DBGp。該協議在xdebug2中實現,並代替舊版GDB類似協議並不再支援。

用戶端

Xdebug2捆綁了一個使用DBGp協議簡單命令列工具。還有一些其他用戶端都做得很好(免費或商業的)。

  • Dev-PHP (IDE: Windows)
  • Eclipse plugin (IDE).
  • Emacs plugin (Editor Plugin).
  • KDevelop (IDE: Linux (KDE); Open Source).
  • ActiveState's Komodo (IDE: Windows, Linux, Mac; Commercial).
  • MacGDBP (Standalone client for Mac OS X; Free)
  • NetBeans (IDE: Windows, Linux, Mac OS X and Solaris).
  • Notepad++ plugin (Editor: Windows).
  • WaterProof's PHPEdit (IDE, from version 2.10: Windows; Commercial).
  • PHPEclipse (Editor Plugin).
  • Devsense's PHP Tools for Visual Studio (MS Visual Studio Plugin; Commercial).
  • JetBrain's PhpStorm (IDE; Commercial).
  • Protoeditor (Editor: Linux).
  • pugdebug (Standalone client for Linux, Windows and Mac OS X; Open Source).
  • VIM plugin (Editor Plugin).
  • jcx software's VS.Php (MS Visual Studio Plugin; Commercial).
  • Xdebug Chrome App (Chrome Application; Open Source)
  • XDebugClient (Standalone client for Windows).

用於調試的簡單命令列工具綁定於xdebug所在的 debugclient 目錄中。

啟動調試器

要使xdebug調試器生效,你需要在php.ini配置一些設定。這類設定有xdebug.remote_enable開啟調試器,xdebug.remote_host和xdebug.remote_port配置IP地址和連接埠以便調試器串連。還有xdebug.remote_connect_back設定用於程式開發伺服器共用給多名開發人員使用。

如果你需要調試器在錯誤發生時(PHP錯誤或exception)發起一會話,你也需要改變xdebug.remot_mode設定。該設定允許值是”req”(預設),高度器會在指令碼一開始就發起一會話,或”jit”值讓會話值在錯誤發生時產生。

做好所有這些設定後,xdebug仍未能在指令碼一運行時自動開始偵錯工作階段。你有三個方法啟用xdebug調試器:

1、 當在命令列中運行指令碼,你需要設定以環境變數:

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

你也能配置 xdebug.remote_host, xdebug.remote_port, xdebug.remote_mode 和xdebug.remote_handler 為相同的環境變數只要在隔離這些值在一個空間內:

export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1"

所有設定你都能在php.ini通過XDEBUG_CONFIG設定。

2、 如果你想在瀏覽器調試指令碼,只需要URL添加 XDEBUG_SESSION_START=session_name參數。要替代GET參數也可以設定XDEBUG_SESSTION_START為POST參數,或是COOKIE參數。詳情請參考下一章節。

3、 要在瀏覽器運行PHP並啟用調試器需安裝以下瀏覽器外掛程式。每種外掛程式都能讓你簡單點下按鈕就開啟調試器。當這些外掛程式啟用,它們會直接設定XDEBUG_SESSION的cookie值,代替XDEBUG_SESSION_START。

The easiest Xdebug

Firefox外掛程式擁有IDE介面更容易方便調試。外掛程式地址: https://addons.mozilla.org/en-US/firefox/addon/the-easiest-xdebug/.

Xdebug Helper for Chrome

Chrome外掛程式只需一鍵協助你開啟或關閉調試。外掛程式地址:https://chrome.google.com/extensions/detail/eadndfjplgieldjbigjakmdgkmoaaaoc.

Xdebug Toggler for Safari

Safari外掛程式能自動開啟Xdebug調試。Github地址: https://github.com/benmatselby/xdebug-toggler.

Xdebug launcher for Opera

Opera外掛程式允許你開啟一xdebug偵錯工作階段。

在你運行指令碼,你要讓你的用戶端能接收調試串連,請參考文章指明用戶端需要如何配置的內容。使用捆綁的簡易用戶端請參考編譯和安裝一章。你可以用於支行“調試用戶端”。

當調試用戶端啟動,它會顯示以下資訊並等待串連被調試伺服器接收:

Xdebug Simple DBGp client (0.10.0)

Copyright 2002-2007 by Derick Rethans.

- libedit support: enabled

Waiting for debug server to connect.

當串連形成,調試伺服器將輸出以下資訊:

Connect

xmlns:xdebug="http://xdebug.org/dbgp/xdebug"

fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php"

language="PHP"

protocol_version="1.0"

appid="13202"

idekey="derick">

Xdebug

Derick Rethans

http://xdebug.org

Copyright (c) 2002-2007 by Derick Rethans

(cmd)

現在你能用有關DBGp的一些命令集。當指令碼運行結束,調試伺服器關閉與用戶端串連。調試用戶端恢複等待新的串連。

通訊設定

靜態IP/單一開發

遠端調試時,內建於php的xdebug扮演了用戶端,而IDE充當了伺服器。以下動圖展示了通訊頻道的建立:

  • 伺服器IP為10.0.1.2 ,HTTP連接埠80
  • IDE所在IP 10.0.1.42, 因此 xdebug.remote_host 設定為10.0.1.42
  • IDE偵聽連接埠9000, 因此 xdebug.remote_port 設為 9000
  • HTTP請求在IDE所在的機器上啟動。
  • Xdebug串連到10.0.1.42:9000
  • 調試開始,HTTP提供回應。

未知IP/多名開發人員

如果xdebug.remote_connect_back利用了,其串連方式有些不同:

  • 伺服器IP和HTTP連接埠10.0.1.2:80
  • IDE所在機器是未知IP,所以 xdebug.remote_connect_back 設為1。
  • IDE偵聽連接埠9000,因此 xdebug.remote_port 設為9000
  • HTTP請求開始, Xdebug通過HTTP頭部擷取IP地址。
  • Xdebug串連擷取到的IP (10.0.1.42)於連接埠9000
  • 調試運行,HTTP提供回應。

HTTP偵錯工作階段

Xdebug包含使用cookie對瀏覽器啟動跟蹤偵錯工作階段功能。該工作類似下面步驟:

  • 當URL變數XDEBUG_SESSION_START=name附加到URL後,或通過POST傳入相同名稱值——Xdebug發出一cookie值”XDEBUG_SESSION”而該值為URL參數XDEBUG_SESSION_START值。Cookie值有效期間為1小時。DBGp協議也會將相同的值在串連到調試用戶端時傳到初始資料包內的“idekey”屬性。
  • XDEBUG_SESSION_START 或XDEBUG_SESSION cookie 一旦設定,Xdebug就會嘗試串連到調試用戶端。
  • 要停止偵錯工作階段(和銷毀附帶cookie) 只需簡單地添加URL參數XDEBUG_SESSION_STOP。Xdebug然後不再嘗試建立串連到高度調試用戶端。

多使用者調試

Xdebug只允許遠端偵錯時指定的一個IP地址串連到 xdebug.remote_host。它不能在瀏覽器跑測試的時候連回到瀏覽器所在的機器IP,除非你使用xdebug.remote_connect_back。

如果開發人員們的各種不同項目都放在同一(開發)伺服器上,你可將每個項目通過Apache的.htaccess功能設定php_value xdebug.remote_host=10.0.0.5而使用xdebug.remote_host 設定。

這裡有兩種解決方案。第一,你可以使用DBGp代理。至於如何使用它參考 Debugging with multiple users 章節。你能在ActiveState's web site下載代理軟體作為python遠端調試包的一部分。有關更多文檔位於 Komodo FAQ。

第二是使用xdebug 2.1的xdebug.remote_connect_back設定。

相關設定

xdebug.extended_info

類型: integer, 預設值: 1

控制xdebug是否強制性開啟PHP解析器的“extended_info”模式,這能讓Xdebug在遠端調試上做到檔案/行號斷點調試。當跟蹤或分析指令碼你通常想關閉此選項,因為PHP產生的數組會增加三分之一的大小減慢你的指令碼。該設定只能在php.ini設定,不能在ini_set()內設定。

xdebug.idekey

類型: string, 預設值: *complex*

控制哪種IDE索引值可由xdebug傳遞到DBGp調試處理器。預設情況下是基於設定環境。首先環境設定DBGP_IDEKEY會被考慮,之後是USER和最後的USERNAME。預設值會是找到第一個環境變數。如果確實找不到則該設定是預設“”。如果該值有設定,它通常覆蓋環境變數值。

xdebug.remote_autostart

類型: boolean, 預設值: 0

一般來說要使用一指定的HTTP的GET/POST變數啟動遠端調試(參考 Remote Debugging)。當設定為1時,Xdebug會嘗試啟動一遠端偵錯工作階段並試圖串連到一用戶端,即便是GET/POST/COOKIE變數並不存在。

xdebug.remote_connect_back

類型: boolean, 預設值: 0, 始於 Xdebug > 2.1

如果設定生效, xdebug.remote_host 設定會忽略而Xdebug會嘗試給製造HTTP請求的用戶端進行串連。它會檢查$_SERVER['REMOTE_ADDR'] 變數並找出使用的IP地址。請記住它沒有有效過濾,任何人都能啟動偵錯工作階段串連到伺服器,即使他們的地址並不匹配 xdebug.remote_host.

xdebug.remote_cookie_expire_time

類型: integer, 預設值: 3600, 始於 Xdebug > 2.1

用於增減遠端偵錯工作階段的cookie存在時間。

xdebug.remote_enable

類型: boolean, 預設值: 0

該開關控制Xdebug試圖與調試用戶端通訊,用戶端通過設定 xdebug.remote_host 和 xdebug.remote_port偵聽伺服器和連接埠當。當設定為0,指令碼僅僅是運行而串連不能被建立。

xdebug.remote_handler

類型: string, 預設: dbgp

可改為‘php3’使用舊的PHP3樣式調試器輸出,‘gdb’能使GDB生效類似於調試器介面,或是‘dbgp’使用調試器協議。DBGp協議是唯一支援的協議。

注意:2.1或以上版本只支援’dbgp’作為協議。

xdebug.remote_log

Type: string, Default value:

If set to a value, it is used as filename to a file to which all remote debugger communications are logged. The file is always opened in append-mode, and will therefore not be overwritten by default. There is no concurrency protection available. The format of the file looks something like:

Log opened at 2007-05-27 14:28:15

-> http://www.bkjia.com/PHPjc/1135469.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1135469.htmlTechArticleXdebug文檔(七) 遠端偵錯,xdebug文檔調試 Xdebug提示調試用戶端介面與PHP運行相聯絡。該章節解釋如何設定PHP與xdebug,並推薦一些用戶端。...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.