cari
Rumahpembangunan bahagian belakangtutorial phpXdebug文档(七) 远程调试,xdebug文档调试_PHP教程

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">

 

 

 

 

(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

->

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1135469.htmlTechArticleXdebug文档(七) 远程调试,xdebug文档调试 Xdebug提示调试客户端接口与PHP运行相联系。该章节解释如何设置PHP与xdebug,并推荐一些客户端。...

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tujuan PHP: Membina Laman Web DinamikTujuan PHP: Membina Laman Web DinamikApr 15, 2025 am 12:18 AM

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP: Pengendalian pangkalan data dan logik sisi pelayanPHP: Pengendalian pangkalan data dan logik sisi pelayanApr 15, 2025 am 12:15 AM

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO)Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO)Apr 15, 2025 am 12:15 AM

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python: Contoh dan perbandingan kodPHP dan Python: Contoh dan perbandingan kodApr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyataPHP dalam Tindakan: Contoh dan aplikasi dunia nyataApr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP: Membuat kandungan web interaktif dengan mudahPHP: Membuat kandungan web interaktif dengan mudahApr 14, 2025 am 12:15 AM

PHP menjadikannya mudah untuk membuat kandungan web interaktif. 1) Secara dinamik menjana kandungan dengan memasukkan HTML dan paparkannya dalam masa nyata berdasarkan input pengguna atau data pangkalan data. 2) Penyerahan borang proses dan menjana output dinamik untuk memastikan bahawa htmlspecialchars digunakan untuk mencegah XSS. 3) Gunakan MySQL untuk membuat sistem pendaftaran pengguna, dan gunakan kata laluan dan preprocessing untuk meningkatkan keselamatan. Menguasai teknik ini akan meningkatkan kecekapan pembangunan web.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularPHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popularApr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Relevannya PHP: Adakah ia masih hidup?Relevannya PHP: Adakah ia masih hidup?Apr 14, 2025 am 12:12 AM

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna