带有Homestead和php-debug的Atom IDE和Xdebug Vagrant:无法使其暂停执行到断点并进行调试

时间:2018-07-25 17:35:35

标签: php vagrant atom-editor xdebug symfony-3.4

我尝试使Xdebug在Homestead Vagrant VM内运行以连接到Atom IDE。因此,通过vagrant ssh创建了SSH连接,并键入了以下命令:

xon
sudo nano /etc/php/7.2/fpm/conf.d/20-xdebug.ini

基于该question,我将以下设置设为20-xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001
xdebug.max_nesting_level = 512
xdebug.remote_host= 10.0.2.2
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true

然后我的Atom配置如下:

"*":
  "atom-autocomplete-php":
    autoloadPaths: [
      "vendor/autoload.php"
    ]
    binComposer: "/usr/bin/composer "
    binPhp: "/usr/bin/php"
    classMapFiles: [
      "vendor/composer/autoload_classmap.php"
    ]
    insertNewlinesForUseStatements: true
  "atom-package-deps":
    ignored: []
  core:
    telemetryConsent: "limited"
  editor:
    fontSize: 13
  "exception-reporting":
    userId: "9f9c6aa7-2152-104d-a113-56d710236d00"
  linter: {}
  "linter-ui-default":
    panelHeight: 300
  "php-debug":
    DebugXDebugMessages: true
    currentPanelHeight: "357px"
    currentPanelMode: "bottom"
    currentPanelWidth: "493px"
    server:
      keepAlive: true
      protocolDebugging: true
      redirectStderr: true
      redirectStdout: true
      serverPort: 9001
    showWelcome: false
    xdebug:
      pathMaps: "[{\"remotePath\":\"/home/vagrant/code/\",\"localPath\":\"/home/pcmagas/Kwdikas/php/apps/ellakcy_member_app/\"}]"
  "tree-view":
    autoReveal: true
    hideVcsIgnoredFiles: true

然后我将Firefox的“ Xdebug Helper”插件配置为:

Firefox Xdebug Helper

但是当我在代码中放置一些断点时,执行并不会停止于它们/未显示。同样在我的宅基地上,我像这样ping通重新连接的IP:

vagrant@ellakcy-member-app:/etc/php/7.2/fpm/conf.d$ ping 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.064 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.112 ms
64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.111 ms
64 bytes from 10.0.2.2: icmp_seq=4 ttl=64 time=0.121 ms
64 bytes from 10.0.2.2: icmp_seq=5 ttl=64 time=0.115 ms
64 bytes from 10.0.2.2: icmp_seq=6 ttl=64 time=0.130 ms
^C^C
--- 10.0.2.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, t

进一步的调查证明,Homestead VM能够通过netcat连接到我的主机(该命令在VM内运行):

nc -z -v -w5 10.0.2.2 9001
Connection to 10.0.2.2 9001 port [tcp/*] succeeded!

那我还有什么遗漏/配置错误,以及如何找出解决方法?

编辑1

进一步的调查证明,php-debug可以在不停止到任何断点的情况下启动和结束调试会话,如PHP Console所述:

Log to the atom ide

您知道为什么调试会话即使有一些断点也会突然终止吗?

编辑2

我将xdebug设置更改为:

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9091
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=/var/log/xdebug.log

然后将侦听端口更改为9091。 ide键更改为atom-xdebug,但仍然无法使它停止到断点。同样,当runnin gover cli无法写入/var/log/xdebug.log时。我应该手动生成它吗?

我也尝试使用xdebug_break()强制执行断点,仍然没有结果。

我的路径映射也是:

[{"remotePath":"/home/vagrant/code/","localPath":"/home/pcmagas/Kwdikas/php/apps/ellakcy_member_app/"}]

我的本​​地路径由以下文件组成:

enter image description here

该项目也是用symfony 3.4编写的。

1 个答案:

答案 0 :(得分:0)

为了使原子与无业游民一起工作,您应该使用以下xdebug设置:

zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 0
xdebug.remote_host=10.0.2.2
xdebug.remote_port = 9091
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=xdebug.log

请记住输入错误,例如。 xdebuf也是为了使原子编辑器正确管理路径,请使用以下映射:

[{"remotePath":"/home/vagrant/code/","localPath":"^local_project_root^"}]

^local_project_root^是包含整个源代码的顶级文件夹(在您的情况下,ellakcy_member_app位于)。

取消选中这些选项以及图像,如图所示:

enter image description here

如果选中,

In将使原子无法在断点上正常工作。如果您有大量项目,请从树形视图中删除它们,并确保仅保留其中一个。您可以稍后添加它们,然后继续工作。