使用 xdebug zend 将 Eclipse PHP 调试为“Web 应用程序”不会在断点处停止

Eclipse PHP debugging as "Web application" with xdebug zend is not stopping at breakpoints

提问人:Vit Bernatik 提问时间:8/27/2023 更新时间:8/30/2023 访问量:18

问:

我用apache服务器配置了PHP Xdebug,并使用Chrome。它正在工作,但后来我使用了其他配置,断点停止工作。

所以最初我的工作配置是这样的:

我的php.ini:

[xdebug]
zend_extension="c:/wamp64/bin/php/php8.0.26/zend_ext/php_xdebug-3.2.2-8.0-vs16-x86_64.dll"
;xdebug.mode allowed are : off develop coverage debug gcstats profile trace
xdebug.mode =debug
xdebug.output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.log="c:/wamp64/logs/xdebug2.log"
;xdebug.log_level : 0 Criticals, 1 Connection, 3 Warnings, 5 Communication, 7 Information, 10 Debug Breakpoint
xdebug.log_level=7
;VBE change: ;xdebug.profiler_output_name=trace.%H.%t.%p.cgrind
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.use_compression=false
xdebug.client_port = 9002
xdebug.client_host = localhost

Window->Preferences->PHP->Server->默认PHP Web服务器

“服务器”选项卡:

enter image description here

“调试器”选项卡:

enter image description here

窗口->首选项->PHP->调试

enter image description here

Window->Preferences->PHP->Debug->Debuggers->XDebug

enter image description here

然后,单击“Run->Debug as->PHP Web Application”

然后它提供“启动URL”对话框。我不得不将路径从

更改为
http://localhost/wp_leo/1/vbe_get_mem.php
http://localhost/3/1/vbe_get_mem.php

因为 Eclipse 使用项目名称,但我在服务器上的实际路径只是 .wp_leo3

然后第一次断点起作用。但后来我玩了配置,在某个时候断点停止工作了。我只得到“在第一行中断”,因为它是在 Window->Preferences->PHP->Debug 中检查的。但所有其他断点都被忽略了。所以问题是为什么我的断点被忽略了??????????

php eclipse 调试 xdebug

评论


答:

0赞 Vit Bernatik 8/27/2023 #1

因此,在一些日食疯狂点击之后,我转到了xdebug.log文件。寻找,我很幸运有命令.所以我发现:breakpointbreakpoint_set

[22360] [Step Debug] <- breakpoint_set -i 897 -t line -f file:///http://localhost/3/1/vbe_get_mem.php -n 18
[22360] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="897" id="223600006"></response>

路径实际上是正确的路径。但它不起作用。我想知道这也许是奇怪的组合。所以我在CLI模式下尝试了我的调试器,其中断点工作并且有使用的路径:/http://localhost/3/1/vbe_get_mem.php -n 18file:///http://

[20048] [Step Debug] <- breakpoint_set -i 967 -t line -f file:///C:%5Cwww%5C3%5C1%5Cvbe_get_mem.php -n 18

这看起来很狂野,但正在工作。所以用 代替 .我的文档根目录是,服务器上的路径是 。%5C/c:/www/3/1/vbe_get_mem.php

实际上,我尝试配置的一件事是映射路径。因为我不喜欢我调试的每个新文件都使用项目名称而不是服务器上的实际路径提供了错误的路径,我需要手动重写它......所以我玩了 Window->Preferences->PHP->Servers->Default PHP Web Server->Tab “Path Mapping”。也许那是个错误。解决方案是删除那里的所有内容并将其设置为空。喜欢这个:

enter image description here

然后断点开始工作。xdebug.log 中的路径开始看起来与 CLI 模式下相同:

[16188] [Step Debug] <- breakpoint_set -i 1972 -t line -f file:///C:%5Cwww%5C3%5C1%5Cvbe_get_mem.php -n 9

顺便说一句,请注意,在首次运行调试时,它会要求输入文件夹,并使用项目名称而不是实际的服务器目录。因此,您需要在第一次启动调试器时重写该版本。或者我找到了如何在项目设置中修复调试路径的解决方案

祝你好运。。。

2赞 Derick 8/28/2023 #2

路径映射应为目录,而不是 URI(如 )。http://

评论

0赞 Vit Bernatik 8/30/2023
是的,我想那是我的错误。但是 eclipse 有点坏了,2 个设置有点打架。即使我使用目录,我最终也发现调试器无法正常工作,不得不在其他地方修复它。看看我进一步的战斗和胜利:stackoverflow.com/a/76984575/1093607