两个应用程序中的断点使用Xdebug共享相同的代码库

时间:2014-06-03 18:18:57

标签: php debugging vagrant xdebug sublimetext3

我在运行Ubuntu的本地Vagrant实例上设置Xdebug。它按预期工作,我可以在我的应用程序中设置断点。

我有一个应用程序向内部API发出请求的场景。内部API位于同一服务器和相同的代码库上。

树插图

codebase/
  app/
    root
  api/
    root

该应用程序可以https://local.myapplication.com访问,API可以http://local.api.myapplication.com}在本地访问。

如果我现在在API的某些代码中设置断点,然后访问https://local.myapplication.com/some/action/that/triggers/the/api/code,只有在我没有为第一个应用程序初始化Xdebug会话时才触发断点,即我没有设置{{ 1}}查询参数。如果设置了,我的断点将被忽略。

这有一定的缺点。如果我在应用程序和API中有断点,那么我现在无法触发。我可以触发应用程序断点或API断点。

我在插件Sublime Text 3上使用https://github.com/martomo/SublimeTextXdebugXDEBUG_SESSION_START中的我的Xdebug设置为:

php.ini

这可以解决吗?任何答案/评论都表示赞赏!

2 个答案:

答案 0 :(得分:1)

两种选择。如果第一个(更容易)没有工作,第二个肯定会。

1 - 为每个http请求启动一个新的Xdebug会话。

在php.ini中,将以下内容添加到xdebug设置中:

xdebug.remote_autostart = 1

请参阅documentation here

2 - 同时运行两个Xdebug会话。

您需要有两个单独的IDE /文本编辑器实例来监听xdebug - 每个实例位于不同的端口上。您可以将两个实例设置为在xdebug服务侦听不同端口时编辑同一项目。

例如:

  • 您的应用程序" - > 9000港口
  • 您的内部API" - >港口9001

制作你的内部API"在端口9001上运行xdebug,您只需在内部API"开始时执行以下操作即可:脚本:

ini_set('xdebug.remote_port', '9001');

答案 1 :(得分:0)

使用conditional breakpoints。您可以使它们依赖于任何PHP代码。例如。为每个入口点设置一个常量并检查它。或者查看请求网址。