首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Netbeans中根据外部请求启动XDebug

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

Stack Overflow用户
提问于 2009-10-07 12:40:39
回答 4查看 21.2K关注 0票数 38

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

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

ie,而不是点击“调试”,将Netbeans置于启动调试器并附加到下一个请求的模式中。

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

编辑:更多信息

我的系统(Ubuntu9.04)设置如下:

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

代码语言:javascript
复制
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调试选项位于默认值:

代码语言:javascript
复制
Debugger Port: 9000
Session ID: netbeans-xdebug
Stop at the First Line: ticked

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

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

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

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

此外,我还启用了xdebug.remote_log,这显示了当我从netbeans内部启动时的信息,但对于外部请求则没有。因此,我认为XDebug根本没有看到外部请求。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-09 16:15:09

转到“项目属性”>“运行配置”>“高级”>“调试url”并检查“不打开web浏览器(*)”。不要在调试器代理下设置主机。保存这些设置。在项目窗口中,在项目上:右键单击> debug (这将开始侦听调试连接)。没有启动浏览器。在浏览器中输入http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug。它应该会侵入netbeans。至少这里发生了这样的事情:)

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

票数 48
EN

Stack Overflow用户

发布于 2010-05-17 16:31:14

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

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

更新:由于NetBeans检查会话id (XDEBUG_SESSION_START),您也必须设置idekey变量。例:

代码语言:javascript
复制
xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
票数 23
EN

Stack Overflow用户

发布于 2014-07-18 09:56:42

我在升级PHP和编译/安装xdebug之后也遇到了类似的问题(在NetBeans、Mac上)。phpinfo显示xdebug已加载,但它仍然无法连接,在尝试之后,上面列出的所有内容仍然没有成功。然后,我尝试将----将文件中设置的参数数降回最低要求的值。这似乎为我解决了这个问题。

代码语言:javascript
复制
; 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设置开始,然后在需要的时候慢慢地添加更多。我怀疑这可能与跟踪设置有关,但不能确定。

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

代码语言:javascript
复制
xdebug.remote_enable=on
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug

编译调试器客户端(在xdebug源代码包中)并检查命令行上的调试也是一个好主意,因为这将告诉您至少可以独立于您的IDE运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1531391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档