Netbeans中的Xdebug:不停在“web root”父文件夹中的文件内的断点处

时间:2013-01-31 16:04:10

标签: netbeans xdebug

我有一个netbeans项目,其目录树如下:

<source folder>
|
|---> gui <web root folder>
|      |
|      L---> datos.php
|
L---> index.php

datos.php将工作目录更改为..(源文件夹)并包含index.php,如下所示:

chdir('..');
require 'index.php';

如果我在datos.php中放置一个断点,调试器会正确地断开它,但是当在index.php中放置一个断点时,它会忽略它。

奇怪的是6个月前我遇到了同样的问题,我能够解决它。现在我不知道它为什么停止工作以及我当时做了什么来解决它。

更多信息:

xdebug日志显示以下用于断点设置的命令:

breakpoint_set -i 315 -t line -s enabled -f file:///Users/tomasgirardi/NetBeansProjects/datamed/index.php -n 51
breakpoint_set -i 316 -t line -s enabled -f file:///Users/tomasgirardi/NetBeansProjects/datamed/gui/datos.php -n 39 

在这两种情况下,xdebug都会响应state =“enabled”

如果我手动调试,我可以使用以下命令设置断点,可以使用

breakpoint_set -i 315 -t line -s enabled -f file:///../index.php -n 51

但我不知道如何让netbeans发出带有相同 file:///../index.php 参数的breakpoint_set命令,而不是 file:///用户/ tomasgirardi / NetBeansProjects / datamed / index.php 或以其他任何方式使我的工作。

提前感谢您的帮助!

5 个答案:

答案 0 :(得分:8)

您始终可以尝试使用xdebug_break();

例如:

<?php
    for ( $i=1, $j=0; $i<10; $i++) { 
        xdebug_break();
        echo "<br>Line $i";   // will stop here
    }
?> 

将在以下行中添加断点。

希望有所帮助...

答案 1 :(得分:2)

断点再次起作用。我没有任何线索说明为什么他们之前没有工作,但现在他们做了。我不记得在xdebug或Netbeans中做过任何更改。

xdebug.log显示我和以前一样,但现在它停在设置的断点处:

<- breakpoint_set -i 4 -t line -s enabled -f file:///Users/tomasgirardi/NetBeansProjects/datamed/index.php -n 51
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="4" state="enabled" id="14290001"></response>

<- run -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="5" status="break" reason="ok"><xdebug:message filename="file:///Users/tomasgirardi/NetBeansProjects/datamed/index.php" lineno="51"></xdebug:message></response>

然而,如果有人知道为什么会发生这种情况,分享它可能会有所帮助:可能我或其他人将来可以避免遇到类似的麻烦。

答案 2 :(得分:2)

此问题更适用于为其网络应用程序使用远程服务器的用户。

我遇到了同样的问题。 Xdebug ignores breakpoints确实帮助了我,但是我已经给出了更具体的netbeans解决方案,但实质是相同的,这是你正在使用的IDE。只需使用远程服务器路径映射本地项目路径即可。

我的环境是WINDOWS 7,网站托管在UBUNTU VM上。我正在使用Windows 7中的NETBEANS并设置了一个远程项目。

我的xdebug记录

<- breakpoint_set -i 4 -t line -s enabled -f file:///C:/Users/ali/Documents/NetBeansProjects/test.com.au/cgen/src/Acme/TestBundle/Controller/CreateController.php -n 39

- &GT;

真正的问题是netbeans [C:/Users/ali/Documents/NetBeansProjects/test.com.au] 中的项目路径以及Web服务器上的项目路径。的 /home/ali/sites/test.com.au

修复:在Netbeans中点击您的项目&gt;属性&gt;运行配置&gt;高级&gt;只需放入适当的服务器路径和等效的项目路径。它会工作正常。

答案 3 :(得分:0)

通过评论xdebug.extended_info = 0解决了同样的问题。还可以将其切换为1.

答案 4 :(得分:0)

要使其重新工作,我在php.ini中将xdebug.remote_host=127.0.0.1更改为xdebug.remote_host=localhost

下面是我的xdebuga配置

xdebug.remote_enable=1
        xdebug.remote_port=9001
        xdebug.remote_handler=dbgp
        xdebug.remote_host=localhost
        xdebug.remote_autostart = 1
         xdebug.show_local_vars = 1
        xdebug.profiler_enable = 1
        output_buffering=off 
        xdebug.idekey=netbeans-xdebug