XDebug可以调试使用pcntl_fork()的PHP CLI脚本吗?

时间:2016-03-10 20:34:16

标签: php fork xdebug

我有一个用PHP编写的CLI脚本,我正在尝试使用XDebug进行调试。调试器正在工作,因为我可以在初始化时逐步执行代码,但是在进程分叉后它会崩溃,成为一个守护进程,并让原始进程退出。我的理论是XDebug套接字在初始进程终止时关闭,这使得守护进程及其所有进程在没有打开套接字的情况下离开我的XDebug监听器。

数据库连接可以在fork之后重新连接甚至创建,但XDebug似乎在其功能列表中没有这样的选项。在调用pcntl_fork()之后,XDebug套接字是否可以在退出的初始进程中存活或重新建立?有没有解决方法呢?

1 个答案:

答案 0 :(得分:1)

不,Xdebug不处理跨多个进程的套接字。你的理论是对的。套接字根本不能轻易地复制到fork上,Xdebug目前不处理这个问题。当进程结束时,套接字也会关闭。

您发表了一个问题(https://bugs.xdebug.org/view.php?id=938)。有可能解决这个问题 - 我已经用旧的MongoDB扩展做了类似的事情 - 但它在我的优先级列表中并不高。