Atom + Xdebug 设置

23
我正在尝试设置Xdebug,因为我厌倦了使用echo和var_dump。 我使用Atom作为我的IDE,并使用php-debug插件。 我使用laravel Homestead vm作为服务器。 将端口9000转发到9999. Atom安装了该插件,并具有以下设置:enter image description here。 我在Atom中设置了断点,浏览到我的页面,但断点没有触发。 我有一种预感它与IDE密钥有关,但我不知道如何继续。enter image description here。 有人知道atom的IDE密钥吗? 还是我漏掉了其他什么东西吗? 编辑:我已将以下内容添加到xdebug.ini中:
xdebug.auto_trace = 0
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 0
xdebug.collect_vars = "Off"
xdebug.default_enable = "On"
xdebug.dump.COOKIE = ""
xdebug.dump.FILES = ""
xdebug.dump.GET = ""
xdebug.dump.POST = ""
xdebug.dump.REQUEST = ""
xdebug.dump.SERVER = ""
xdebug.dump.SESSION = ""
xdebug.dump_globals = 1
xdebug.dump_once = 1
xdebug.dump_undefined = 0
xdebug.extended_info = 1
xdebug.file_link_format = ""
xdebug.idekey = "VVVDEBUG"
xdebug.manual_url = "http://www.php.net"
xdebug.max_nesting_level = 100
xdebug.overload_var_dump = 1
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "192.168.50.1"
xdebug.remote_log = /srv/log/xdebug-remote.log
xdebug.remote_mode = "req"
xdebug.remote_port = 9000
xdebug.show_exception_trace = 0
xdebug.show_local_vars = 0
xdebug.show_mem_delta = 0
xdebug.trace_format = 0
xdebug.trace_options = 0
xdebug.trace_output_dir = "/tmp"
xdebug.trace_output_name = "trace.%c"
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1
6个回答

5

就像 @sparkos72所说, 在Ubuntu 16.04和Debian 7上, atom ide 键 xdebug.atom 对我有用 :-). 我试图扩展他们的答案。

我在 xdebug.ini (路径:/etc/php5/apache2/conf.d/xdebug.ini)中使用了以下配置,结合了php-debug 插件。

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=172.17.0.1
xdebug.remote_port=9000
xdebug.idekey=xdebug.atom
xdebug.remote_autostart=true

我有一个带有Debian 7、Apache和PHP 5的Docker容器,这就是我使用172.17.0.1而不是127.0.0.1的原因。我的“真实”机器是Ubuntu。
希望这能帮到你。

嗨,我正在使用几乎相同的配置,但是使用docket-compose,其中php和apache被设置为单独的服务。我在使用php-debug时,在atom上配置xdebug时遇到了麻烦。 - Shahzad Fateh Ali

1

对我来说,没有一个答案能够解决我的问题,所以我自己留下了一个。

设置

  • 确保启用了xdebug; sudo phpenmod xdebug 或等效命令。
  • 确保正确配置了xdebug:
    • xdebug.remote_enable=1
    • xdebug.remote_handler=dbgp
    • xdebug.remote_mode=req
    • xdebug.remote_host=172.17.0.1(根据您的设置)
    • xdebug.remote_port=9000(根据您的设置)
  • 没有使用xdebug.remote_autostart,因为它会在普通请求时启动调试模式。因此,即使您没有在Chrome / Firefox扩展程序的调试模式下,也将尝试传递调试数据,这可能会没有任何原因地减慢速度。
  • 安装Xdebug chrome/firefox扩展,并将IDE密钥设置为xdebug-atom(我发现xdebug.atom也可以工作)。

调试

当您真正想要调试某些内容时,

  • 在代码中添加断点;使用Alt + F9或相应快捷键。
  • 在Atom中打开PHP Debug面板;使用Ctrl + Alt + D或相应快捷键。如果您使用的是某些版本的Ubuntu,则可能需要更改快捷键Ctrl + Alt + D,因为它可能作为Show Desktop。在这种情况下,请单击IDE中的PHP Debug按钮以切换调试器。
  • 调试器应该会显示类似于Listening to port 9000或您在PHP Debug设置中设置的端口。
  • 在浏览器中打开要调试的页面(如果尚未打开),然后单击调试扩展程序图标以启用Debug模式。实际上,这会在您的文档中设置一个cookie,例如XDEBUG_SESSION=xdebug-atom等。
  • 启用调试扩展程序后,请刷新页面,然后您应该能够使用调试器(如果一切顺利)。

希望这可以帮助您。花了一段时间才使其正常工作。现在我不必购买PHP Storm了!


1

对我来说,IDE密钥是xdebug.atom(mac / apache)。在Atom php-debug配置中,将服务器端口设置为9000


0

我也曾尝试过同样的事情,但是从未找到真正的解决方案。后来我发现xdebug在发现错误异常时开始调试,于是我开始在需要调试的代码中加入错误,并且效果很好。例如,在你想要调试的那一行加入以下代码。

@xdebug_start: 

然后看魔法的发生。

我制作了一个安装插件的视频。 https://www.youtube.com/watch?v=jD0TIzYMFzQ


0

对于我来说,PHP3.2+ ATOM+ XAMPP+ XDEBUG Helper的IDE密钥是xdebug-atom,强烈建议使用XDEBUG Helper,在那里可以设置IDE密钥。


0

我知道现在已经晚了,但再说一遍:

你的 .ini 文件有这个:

xdebug.idekey = "VVVDEBUG"

这意味着您需要在当前使用"Atom"的"The Easiest Xdebug"扩展设置中设置值为"VVVDEBUG"(不带引号)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接