gpt4 book ai didi

debugging - Xdebug 即使在记录中断时也不会在断点处停止,但表示它已连接到客户端

转载 作者:行者123 更新时间:2023-12-01 13:52:20 28 4
gpt4 key购买 nike

几周来,我一直在尝试让我的 PHPStorm 通过 Xdebug 连接到远程主机。最近我发现客户端的主机阻塞了端口 9000。我终于修复了这个问题,现在 xdebug 日志显示它正在连接到客户端(当然是我)。

但是,它不会在任何断点处停止。在 PHPStorm 中设置的断点甚至不会显示在日志中。调用 xdebug_break(); 至少会被记录为中断,但它仍然不会停止。

根据此处的其他问题,我已确认 xdebug 加载了 zend_extention=/full/path/xdebug.so 而不是 extension=xdebug.so

我也试过从端口 9000 切换到端口 9001,结果没有任何变化。

日志条目是:

Log opened at 2015-06-09 14:41:10  //and many other dates and times
I: Checking remote connect back address.
I: Remote address found, connecting to MY.IP.HE.RE:9000. //similar message on port 9001 after trying that
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///chroot/home/company/remotehost.com/html/index.php" language="PHP" protocol_version="1.0" appid="2294" idekey="PHPSTORM"><engine version="2.2.2"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2013 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="break" reason="ok"><xdebug:message filename="file:///chroot/home/company/remotehost.com/html/app/code/community/Zzyzzx/Stores/controllers/TestController.php" lineno="11"></xdebug:message></response>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2015-06-09 14:41:13

它从中获取的文件在 IDE 中设置了 3 个断点,一个在第 11 行编码。

可能是什么导致它无法跟随断点并让我调试?

我在服务器设置中使用的路径是 /home/company/remotehost.com/html 映射到我的项目根目录,其中包含相同的文件。我知道这是从 root 开始的绝对路径,如果我知道它是由显示代码中断的日志确认的。它是唯一具有路径集的文件。我需要为每个文件设置路径吗?

我也尝试删除服务器以希望触发对话,但它没有被触发,我只是得到与新时间/日期/IP 完全相同的日志条目。

我刚刚发现,每当我尝试重新加载我正在调试的页面时,在我的“运行”菜单中都有一个“恢复程序”选项,它会显示一个包含我正在尝试调试的文件的列表。单击它会打开调试工具窗口,其中显示消息“正在等待来自 JetBrains IDE Chrome 支持扩展的连接...”。这不是用来调试 javascript 的吗?它是否试图将我的 PHP 调试为 Javascript?

我还尝试使用其他几个 xdebug 客户端,结果相似。它连接然后给出相同的消息。让我觉得这不是 PHPStorm。

我所做的一切都是为了调试以下代码:

    class Zzyzzx_Stores_TestController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo "in the controller 1 <br />";
xdebug_break();
echo "in the controller 2 ";
//3 commented lines of unused code
//
//
phpinfo();
//2 commented lines of unused code
//
}
}

每次“回声”时,ide中都设置了断点,当然你可以看到编码断点。

在本地调试这个工作正常。

最佳答案

断点不起作用的一个原因是 Mac OSX 奇怪的区分大小写。

我发现,如果文件名与类的大小写不匹配,则仅该文件的断点将不起作用,即使应用程序的其余部分调试正常,并且“在第一行中断”显示调试器通常可以正常工作。

OSX 上的文件系统本质上是不区分大小写的,但奇怪的是命令行是区分大小写的,这会让您误以为它更像其他区分大小写的 Unix。然后,这会让您相信永远不会出现大小写不匹配,因为它会完全损坏并且您会注意到!

但是我觉得 OSX 的运行方式确实更像 Windows - 在这方面非常宽容,直到您将文件上传到 Linux 服务器...

我在 LegacyJSONMetadataMapper.php 中有一个名为 LegacyJsonMetadataMapper 的类。自动加载器工作正常,应用程序工作正常,PHPStorm 没有提到大小写的区别——我没有注意到。但它根本不会触发任何断点。一个小时后摆弄映射和服务器配置(已经工作多年!),然后我阅读了 a PHPStorm bug report其中提到了这方面。我更改了大小写,断点现在起作用了。

请注意,如果命名空间路径中的任何文件夹也不匹配命名空间“slugs”的大小写,也会发生这种情况。我只是遇到了同样的问题(有些断点有效,有些无效)。

关于debugging - Xdebug 即使在记录中断时也不会在断点处停止,但表示它已连接到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781486/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com