代码之家  ›  专栏  ›  技术社区  ›  John Carter

根据外部请求在Netbeans中启动XDebug

  •  35
  • John Carter  · 技术社区  · 16 年前

    我正在使用Netbeans 6.7和XDebug在我的机器上调试一个PHP站点,从Netbeans内部启动请求(Project->debug)。这很好,非常有用。

    我的问题是:是否可以将调试器附加到传入的任何请求,而不仅仅是从Netbeans中启动的请求?

    我觉得这可能是个愚蠢的问题,但如果可能的话,那就太好了。

    编辑: 再多了解一点

    我的系统(Ubuntu 9.04)设置如下:

    /etc/php5/conf.d/xdebug.ini

    zend_extension=/usr/lib/php5/20060613/xdebug.so
    
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.idekey=netbeans-xdebug
    

    Netbeans PHP调试选项为默认值:

    Debugger Port: 9000
    Session ID: netbeans-xdebug
    Stop at the First Line: ticked
    

    我的 /etc/hosts 文件重定向 www.mywebsite.com localhost

    如果我单击Netbeans中的debug按钮,那么Firefox将以地址启动 http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug ,调试器将按预期工作。

    但是如果我浏览到 http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug ,这不会启动Netbeans中的调试器。

    我也试过设置 xdebug.remote_host=www.mywebsite.com

    而且,我已经启用了 xdebug.remote_log ,这显示了从netbeans内部开始时的信息,但没有显示外部请求的信息。所以我认为XDebug根本看不到外部请求。

    4 回复  |  直到 14 年前
        1
  •  48
  •   ax. Clement Herreman    16 年前

    &燃气轮机; &燃气轮机; &燃气轮机; 检查 (*). 做 将主机置于 鼠标右键单击 &燃气轮机; 调试 (这将开始侦听调试连接)。没有启动浏览器。进来 http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug 在浏览器中。它应该突破netbeans。至少这里是这样:)

    (*)您可能还需要设置一个 路径映射 -对我来说,它在没有

        2
  •  23
  •   Pada    16 年前

    默认情况下,当未指定“xdebug\u SESSION\u START”Cookie/URL参数时,xdebug不会尝试连接到远程主机。 通过在php.ini中将xdebug.remote_autostart设置为1,可以使xdebug“始终打开”。

    此外,您必须在NetBeans中启动PHP调试器才能使其工作。我还没有找到更好的解决方案,但是您可以让PHP调试器监听传入的连接,方法是开始调试随机文件(使用CTRL+SHIFT+F5开始调试文件),然后在断点处停止后继续(按F5)。Netbeans调试器应该一直运行,直到您真正停止它为止。

    xdebug.remote_autostart = 1
    xdebug.idekey = "netbeans-xdebug"
    
        3
  •  3
  •   Pete855217    11 年前

    减少 将我的PHP.ini文件中设置的参数数恢复到所需的最小值。这似乎为我解决了问题。

    ; REMOVED (commented) the following
    ; xdebug.remote_log=/myfile.log
    ;xdebug.extended_info = off
    ;xdebug.auto_trace=1
    ;xdebug.trace_output_dir=/mydir/myphptracefile.txt
    ;xdebug.trace_output_name=php_trace.%c
    ;xdebug.collect_params=4
    

    我还将默认的xdebug.idekey从netbeans xdebug重命名为default,然后重新命名。

    重新启动Apache后,xdebug再次开始工作:我不确定到底是什么修复了它,但一个好的起点可能是 只需从php.ini文件中最少数量的xdebug设置开始,然后慢慢添加更多设置(如果需要)。 我怀疑这可能与跟踪设置有关,但不能确定。

    我最终使用的基本设置是:

    xdebug.remote_enable=on
    xdebug.remote_port=9000
    xdebug.remote_host=localhost
    xdebug.remote_handler=dbgp
    xdebug.idekey=netbeans-xdebug
    

        4
  •  1
  •   timmow    16 年前

    不确定Netbeans,但我使用过的任何其他IDE都始终在侦听调试连接。通过附加查询字符串,可以从xdebug启动新的调试会话 ?XDEBUG_SESSION_START=name 链接到url。如果Netbeans正在侦听,那么应该启动一个新的调试会话。

    看见 http://xdebug.org/docs/remote#browser_session

    推荐文章