xdebug不会在断点处停止

Red*_*din 23 php eclipse xdebug

我花了几个小时来设置我的IDE以使用eclipse和xdebug来调试PHP.除了我在eclipse上设置的断点之外,一切都很好.如果我上线双击添加断点,调试器想停止.如果一个添加行xdebug_break()调试器在该行停止以及...

这可能是配置问题.谁能帮助我?

  • Eclipse:Eclipse PDT 2.2.0 All In Ones Windows 32位
  • Xdebug:5.3 VC6(32位)
  • PHP:PHP版本5.3.3

的php.ini

[xdebug]
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "c:/temp"
xdebug.collect_params = 4
xdebug.collect_return = on
xdebug.collect_vars = on

xdebug.show_local_vars = 1
Run Code Online (Sandbox Code Playgroud)

Fre*_*man 19

如果xdebug不在代码的任何部分停止,请添加xdebug_break()到此部分代码中.


Nan*_*nne 13

似乎有几个问题可能是这个问题的根源.在我的情况下,我认为我需要设置一些路径映射.

找到的设置
rightclick-project->properties->PHP Debug
然后
server->edit->path mapping
是错误的.

我已经手动添加了一些我认为是正确的东西,但是Eclipse似乎可以通过自己完成这一切.删除映射使其工作.


Chr*_*iki 10

Eclipse PDT和Xdebug也有类似的问题.原因是Eclipse正在通过IPv6监听,但Xdebug尝试通过IPv4连接:

chriki@machine:~$ netstat -an | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN
Run Code Online (Sandbox Code Playgroud)

Xdebug 似乎还不支持IPv6.

添加行后

-Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)

-vmargs在我的eclipse.ini文件中的行之后,Eclipse开始通过IPv4监听:

chriki@machine:~$ netstat -an | grep 9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN
Run Code Online (Sandbox Code Playgroud)

调试现在可以完美运行.


Red*_*din 7

我已经解决了这个问题.

在我的php.ini上,我将xdebug添加为扩展而不是zend_extension.

php.ini中

zend_extension=C:\EasyPHP-5.3.3\php\ext\php_xdebug.dll
Run Code Online (Sandbox Code Playgroud)

注意:路径必须是完整路径而不是相对路径.

调试器工作得很好.好吃!


Mar*_*cel 6

当我从 Xdebug 2 迁移到 3 时,出现了类似的问题。

有一个文档,但最重要的一点是:

Xdebug 的默认调试端口已从9000更改为9003

要确保仅单步调试处于活动状态,而不是:

xdebug.remote_enable=1
xdebug.default_enable=0
xdebug.profiler_enable=0
xdebug.auto_trace=0
xdebug.coverage_enable=0
Run Code Online (Sandbox Code Playgroud)

你现在只需:

xdebug.mode=debug
Run Code Online (Sandbox Code Playgroud)

xdebug.remote_autostart设置已被删除。相反,设置

xdebug.start_with_request=yes
Run Code Online (Sandbox Code Playgroud)

  • 添加 `xdebug.start_with_request=yes` (而不是旧的 `xdebug.remote_autostart`)对我来说很重要,在 Manjaro Linux 上使用 php7.4.13、XDebug 3.0.1、VSCode。我错过了 XDebug 3 的这个更新。 (2认同)

Jek*_*kis 5

我有同样的问题。解决方案是打开正确的文件并在其中添加断点。

我的本地服务器在我的虚拟 Z: 驱动器上(我使用的是 denwer 而不是 WAMP)。Z 驱动器指向我的 D:/webserver 文件夹。所以我可以打开我的文件 1) Z:/myproject/script.php和 2) D:/webserver/myproject/script.php

由于某些原因,调试器仅在打开的 Z:/myproject/script.php文件中的断点处停止。

如何测试我的解决方案???接下来做:

  1. 打开任何要调试的 php 文件
  2. 添加xdebug_break()到任何行并保存文件
  3. 运行调试

在我的情况下,在调试过程启动后,我的 phpDesigner IDE 在 IDE 中打开正确的文件并在 xdebug_break() 行停止。因此,在这个新打开的文件中,您可以添加断点,它们将起作用。使用打开的文件进行调试。