我使用NetBeans 6.7和Xdebug调试PHP网站我的机器上,启动从NetBeans中(项目 - >调试)中的要求。 这工作得很好,而且是非常有用的。
我的问题是:是否有可能在调试器附加到进来,而不仅仅是那些我从NetBeans中启动任何要求吗?
即,而不是单击“调试”,把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中的调试按钮,然后火狐与地址发起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的是在所有看到外部请求。
去项目属性 > 运行配置 - > 高级 > 调试URL和检查不打开网络浏览器 (*)。 不设置下调试代理主机。 保存这些设置。 在项目窗口中,您的项目: 点击鼠标右键 > 调试 (此开始监听调试连接)。 没有浏览器启动。 进入http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug
在浏览器中。 它应该在NetBeans突破。 至少这是这里会发生什么:)
(*),你可能还需要设置一个路径映射 -对我来说,它的工作原理没有
默认情况下,Xdebug的将不会尝试未指定“XDEBUG_SESSION_START”曲奇/ URL参数时,被连接到远程主机。 您可以启用Xdebug的是“永远在线”,通过在php.ini的xdebug.remote_autostart设置为1。
此外,你将不得不开始在NetBeans PHP调试器这个工作。 我还没有找到一个更好的解决办法,但你可以通过启动调试一个随机文件(使用Ctrl + Shift + F5开始调试文件),然后继续(按F5键)有PHP调试器侦听传入连接一次它停在了断点。 NetBeans调试器应该运行,直到你真正停止。
更新:由于NetBeans的检查会话ID(XDEBUG_SESSION_START),你必须设置idekey变量太多。 例如:
xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
我有一个类似的问题(在NetBeans中,Mac OSX版),升级PHP和编译/安装的XDebug后。 的phpinfo显示了XDebug作为加载状态,但它仍然无法连接,并尝试后仍以上所列的一切没有成功。 然后我试图减少在我的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
我也改名为从NetBeans中,Xdebug的默认xdebug.idekey默认值,然后再回来。
重启动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
这也是编译debugclient(在Xdebug的源码包),并检查命令行调试,因为这会告诉你是否Xdebug的至少可以独立的IDE的运行是一个好主意。
不知道有关NetBeans,但我已经使用其他IDE始终监听调试连接。 您可以通过附加查询字符串开始从Xdebug的一个新的调试会话?XDEBUG_SESSION_START=name
的URL。 如果NetBeans是听,这应该然后启动新的调试会话。
见http://xdebug.org/docs/remote#browser_session了解更多详情