【问题标题】:Parallel debugging - xdebug and phpstorm并行调试 - xdebug 和 phpstorm
【发布时间】:2014-08-21 06:38:42
【问题描述】:

我尝试进行并行调试。我使用 PhpStorm debugging tutorial(大约 30 分钟或更长时间)与 frontend.php 和 backend.php 文件:

frontend.php 文件:

<?php

$personJson = file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
$person = json_decode($personJson);

var_dump($person);

backend.php 文件:

<?php

class Person {
    public $name;
    public $email;
}

$person = new Person();

$person->name = 'Something';
$person->email = 'something@something.com';

echo json_encode($person);

我使用零配置方法。当我在带有调试会话的浏览器中启动前端文件时,在 PhpStorm 中调试会话正在启动,但我无法直接跳过:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');

按照教程(视频中的 31:36)转到 backend.php 文件。

问题:如何使它工作?在此视频中没有其他内容,它似乎应该立即工作,但它没有。

我在 phpinfo 中包含我的 xdebug 配置,在 PhpStorm 中包含 xdebug 配置

【问题讨论】:

  • 所以..您试图同时调试多个请求(第一个脚本调用第二个,并且您也想调试它)。那是对的吗?如果是这样 - 显示您的 xdebug 设置(phpinfo() 输出的 xdebug 部分)以及“设置 | PHP | 调试”的屏幕截图
  • @LazyOne 感谢您的关注。这正是我想要实现的。我在我的问题中添加了屏幕截图

标签: php debugging xdebug phpstorm remote-debugging


【解决方案1】:

1. Settings | PHP | Debug | Max simultaneous connections -- 应该大于 1。你已经设置好了。

2. xdebug.remote_autostart 应该是 1 / on。这将告诉 xdebug 尝试调试每个请求,而不考虑调试 cookie/参数。

这是必需的,因为您的第二个脚本不会收到与原始脚本相同的 cookie/参数(因为它在技术上是单独的请求)。

是的,此选项可能不方便日常开发,因为它会尝试调试每个请求,如果调试客户端不可用...您将看到脚本执行延迟大约 1 秒。

替代方法(在您的特定情况下)将在调用第二个脚本时将 xdebug GET 参数(例如?XDEBUG_SESSION_START=1)添加到 URL 中。这将告诉 xdebug 调试这个请求。例如:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php?XDEBUG_SESSION_START=1');

如您所见,这种方法需要修改您的代码(请求的 URL)。这通常是不希望的。

另一种选择是通过添加xdebug_break(); 以编程方式设置断点。即使没有那些额外的参数/cookies 或remote_autostart 设置,这也应该触发调试器。

缺点是一样的:需要代码操作。优点 - 与更改 URL 相比,它应该更容易做到(+ 更容易阅读/理解正在发生的事情)。

【讨论】:

  • 非常感谢您非常详细的回答。就我而言,更改 xdebug.remote_autostart 是我需要的。
猜你喜欢
  • 2015-06-24
  • 2014-06-01
  • 2011-11-06
  • 2017-07-20
  • 1970-01-01
  • 2014-01-16
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多