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

2022-08-30 12:39:11

我正在使用 Netbeans 6.7 和 XDebug 在我的机器上调试 PHP 站点,从 Netbeans (Project->Debug) 中启动请求。这工作正常,非常有用。

我的问题是:是否可以将调试器附加到传入的任何请求,而不仅仅是我从 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/hostswww.mywebsite.comlocalhost

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

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

我也尝试过设置,但这没有什么区别。xdebug.remote_host=www.mywebsite.com

另外,我已经启用了 ,这显示了我从 netbean 内部开始的信息,但对于外部请求却没有。所以我认为XDebug根本没有看到外部请求。xdebug.remote_log


答案 1

转到项目属性>运行配置>高级>调试 URL,并选中“不要打开 Web 浏览器 ”(*)。不要调试器代理下设置主机。保存这些设置。在项目窗口中,在项目上:右键单击>调试(这将开始侦听调试连接)。未启动任何浏览器。在浏览器中输入。它应该在网豆中破裂。至少这里发生的事情:)http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug

(*)您可能还必须设置路径映射 - 对我来说,它的工作原理没有


答案 2

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

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

更新:由于 NetBeans 会检查会话 ID(XDEBUG_SESSION_START),因此您还必须设置 idekey 变量。例如:

xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"

推荐