magento PHPStorm / debugger不会在某些断点停止

nkoocmlb  于 2023-08-05  发布在  PHP
关注(0)|答案(5)|浏览(141)

我已经为Mac OS(Apache 2.2.22,PHP 5.3.15)设置了XDebug(2.2.1)和PHPStorm-IDE(Mac OS X 10.7.5),并使用了标准的LAMP堆栈。

/etc/php.ini文件系统

[xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
xdebug.file_link_format="txmt://open?url=file://%f&line=%1"
xdebug.remote_enable = On
xdebug.remote_autostart = "PHPSTORM"
xdebug.var_display_max_data = 1024
xdebug.dump.GET=*
xdebug.dump.POST=*
xdebug.show_local_vars=On
xdebug.dump.SERVER=*
xdebug.dump_globals=On
xdebug.collect_params=4

字符串
我遵循了这两个教程,它适用于我99%的项目文件:

我使用的是Zend Frameworks MVC架构。我可以在我的大多数控制器类中的断点处停止,但在其他一些控制器中,PHPSorm忽略了我所有的断点。
你有什么建议吗?如何两柴调试工具?哪种配置错误会导致这种情况?
谢谢你的帮忙。

wvyml7n5

wvyml7n51#

这几乎是phpstorm中错误Map路径的结果。您可以在设置->PHP->服务器中配置路径。我遇到了一个类似的问题,我所要做的就是在phpstorm中为我的代码的根Map中设置服务器上(运行xdebug的地方)的正确绝对路径。例如c:\my\code\lives\here\on\my\dev\box => /myserver/my/code/lives/here/on/my/actual/server
下面是一个更完整的解决方案,以及一些关于调试XDebug的一般提示:
1.将远程日志文件添加到xdebug设置中:xdebug.remote_log = /path/to/logs/xdebug.log
1.重启apache
1.给日志加尾(我假设您可以在OSX中完成此操作)tail -f /path/to/logs/xdebug.log
--在下次尝试调试页面时,通过跟踪日志内容,您可能会看到一些明显的错误。如果是这样的话,做你需要做的任何事情。如果没有,我们仍然假设这是路径的错误Map,并继续尝试修复它:
1.在PHPStorm/XDebug将实际停止的地方设置一个断点,并使其停止。在网络上的很多地方,人们报告index.php是第一次让PHPStorm在断点处停止的最容易的地方。
1.在一个不能让PHPStorm/XDebug停止的文件中,设置和取消设置一个断点,同时PHPStorm在index.php文件中的断点处停止。您应该在xdebug日志文件中看到如下所示的行:
<- breakpoint_set -i 19 -t line -f file:/myserver/my/code/lives/here/on/my/actual/server/file.php-n 159 ->
1.查看文件是否确实位于XDebug查找它的位置,例如。
tail /myserver/my/code/lives/here/on/my/actual/server/file.php
1.如果该文件实际上并不存在,请调整PHPStorm设置中的路径Map,直到PHPStorm告诉XDebug查看实际存在的文件。例如,如果XDebug说file=/mysrver/my/code/lives/here/on/my/actual/server/file.php,那么在第6步中,您会注意到该文件在服务器上不存在,然后您可能会意识到“哦,糟糕,我在路径Map中拼写了myserver错误”,然后在PHPStorm中修复拼写可能会解决这个问题。
这是一个有点旧的线程,但希望这将帮助某人最终:)

deyfvvtc

deyfvvtc2#

好吧,我也遇到了同样的问题,我在PHPStorm的bug跟踪和他们的开发论坛上进行了挖掘。
事实证明,您需要确保断点不起作用的文件的路径与MAC上的路径完全相同(小写/大写)。我刚刚从Windows迁移了一个项目,在驱动器上有混合的大小写文件夹和文件名,在require_once指令中有不同的大小写。
一旦我确保require_once中的路径与磁盘上的大小写匹配,那么我的断点就又开始工作了!
http://devnet.jetbrains.com/message/5488439

wyyhbhjk

wyyhbhjk3#

这通常意味着不调用控制器。如果它确实适用于某些控制器(在同一个项目中),它只是意味着:代码不会被调用。
因此,请执行几个步骤,以查看调用的控制器是否正确。(例如,从调度开始,然后进入,直到控制器被加载)。
您是否有可能远程工作(例如:从本地到另一个服务器)。在将代码放置到服务器之前,可能需要一点时间。请稍等几秒钟,然后再试一次。因为它怎么会在它不知道的点上断裂呢?
希望这有助于你开始调试它。

jv4diomz

jv4diomz4#

这种事我也发生过好几次。原因通常是调试器的配置。您必须在“运行>编辑配置”下正确设置调试服务器的路径Map。

b4qexyjb

b4qexyjb5#

未在断点处停止的可能原因:

  1. IDE拒绝来自远程服务器的调试连接请求。电话图标必须为绿色(运行->开始监听PHP调试连接),以避免这种情况。
    1.所有断点都被静音。关闭断点禁用。
    1.不选中特定断点的挂起复选框。在运行->查看断点中逐个检查。勾号表示“暂停执行”,而不是人们可能认为的“暂停断点”。(我目前使用的PHPStorm版本似乎有bug,如果我勾选了挂起复选框,那么它还没有生效。我必须单击另一个断点,然后单击“上一步”,以便选中复选框“提交”。)
    1.如果你想调试一个从浏览器调用的脚本,那么浏览器应该设置一个名为XDEBUG_SESSION的cookie,并使用idekey的值。您可以通过以下方式扩展URL来启动它:http://192.168.99.100/?XDEBUG_SESSION_START=PHPStorm.请注意cookie的有效期只有一个小时。有一些有用的浏览器加载项可以简化调试器cookie的处理。更多https://xdebug.org/docs/remote#starting信息请参见www.example.com。
    1.单个断点未启用。在运行->查看断点中逐个检查。
    1.单个断点有一些条件没有得到满足。在【运行->查看断点】中检查断点的【条件】设置。
    1.在远程服务器和IDE之间存在一些Map问题。当您在IDE中设置断点时,它会向远程服务器发送执行应在F文件的第N行停止的消息。本地文件与远程服务器上的文件之间存在Map。该Map在IDE中的以下位置定义:
  • 首选项->语言和框架-> PHP页面的路径Map字段
  • 首选项->语言和框架-> PHP ->服务器页面

如果这些Map不正确,例如本地F1.php意外Map到远程F2.php,则可能会出现问题。如果您在本地文件F1.php的#N行设置断点,则只有当执行到文件F2.php的#N行(而不是F1.php的#N行)时,服务器才会停止执行。如果这就是问题所在,那么只要打开Run -> Break at first line in PHP scripts标记,就可以调试代码。注意开发操作系统和远程服务器的目录和文件名区分大小写的不同!
1.由于某些网络设置问题,IDE未从远程服务器接收调试连接请求。在首选项->语言和框架-> PHP ->调试页面中检查IDE是否在端口9000上侦听XDebug,检查IDE是否可以接受外部连接,等等。
1.远程服务器的XDEBUG相关设置不正确。我在php.ini中使用以下设置
.

xdebug.default_enable = 1
xdebug.remote_enable = 1
xdebug.remote_connect_back = 0
xdebug.idekey = "PHPStorm"
xdebug.remote_autostart = 1
xdebug.remote_host=192.168.1.26

字符串
您应该将remote_host设置为开发计算机的IP地址,或者如果您的服务器位于localhost上,则可以省略整行。
另外,我设置了以下环境变量:

export PHP_IDE_CONFIG="serverName=halmaiXdebug"
export XDEBUG_CONFIG="idekey=PHPStorm"


其中serverName的值是我在IDE中的Preferences -> Languages & Frameworks -> PHP -> Servers页面中定义的服务器的Name

UPDATE:PhpStorm版本太旧也会导致断点问题。使用服务器上的PHP 7.4和本地的PhpStorm 2018.2,执行在第一条指令处停止,但不会在任何其他指令处停止。升级到较新的PhpStorm版本(2020.1)后,它可以按预期工作。
2023年更新:使用Xdebug 3,这是我当前的配置:

xdebug.client_host=192.168.1.110
xdebug.client_port="9003"
xdebug.start_upon_error=yes
xdebug.idekey = "PHPStorm"
xdebug.mode=develop,coverage,debug,profile
xdebug.discover_client_host=1

相关问题