所以日食和xdebug走进一个酒吧,然后我的Apache服务器死亡

我正在使用windows xp x86,wamp,apache2,php 5.3 x86,eclipse php和xdebug,作为虚拟主机和https虚拟主机在本地主机上运行

日食版本信息
Eclipse for PHP开发者版本:Helios发布版本号:20100617-1415

我已经成功地pipe理,以设置日食和xdebug,一切都很好。

然后,我不得不作出我的项目svn分支,并重新configurationApache 2个新的虚拟主机,并更新我的Windows主机文件。

现在当我在eclipse中启动debugging模式时,所有东西都死掉了

具体来说,如果我没有设置断点,应用程序运行良好,保存我试图首先debugging的问题。

如果我设置了一个断点,应用程序就停在断点处,并且eclipse似乎在持球。 但现在,当我按下继续,或踩过,或踩到,或打喷嚏,日食告诉我执行已经恢复,但应用程序继续挂起,我必须重新启动Apache。

我怀疑在eclipse和xdebug之间的通信有一些中断,因为它看起来像eclipse发送我的继续或步进命令,但xdebug没有收到它。

但即使如此,我也不知道该怎么办。 我应该在哪里看?

更新:
我已经成功地使用notepad ++,它的xdebug插件进行debugging,并且像穴居人一样,在url中键入&XDEBUG_SESSION_START = session_name。 不过,尽pipe我非常喜欢npp,但它的debugging插件却相当麻烦。

所以我注意到了一个名为“phpstorm”的东西,它宣称是一个轻量级,但function齐全的PHP IDE,本地xdebug支持的一个广告在stackoverflow。 演示程序需要重新启动才能正常工作,感觉就像是在一张摇摆不定的草稿表上工作,但它能够很好地debugging我的小testing应用程序和真正的应用程序,这比我可以说的更多那一刻,即使它可能是我的错。

我可能应该早些发布:/这里是我的phpinfo()xdebug部分

xdebug xdebug support enabled Version 2.1.0 Supported protocols Revision DBGp - Common DeBuGger Protocol $Revision: 1.145 $ Directive Local Value Master Value xdebug.auto_trace Off Off xdebug.collect_assignments Off Off xdebug.collect_includes On On xdebug.collect_params 0 0 xdebug.collect_return Off Off xdebug.collect_vars Off Off xdebug.default_enable On On xdebug.dump.COOKIE no value no value xdebug.dump.ENV no value no value xdebug.dump.FILES no value no value xdebug.dump.GET no value no value xdebug.dump.POST no value no value xdebug.dump.REQUEST no value no value xdebug.dump.SERVER no value no value xdebug.dump.SESSION no value no value xdebug.dump_globals On On xdebug.dump_once On On xdebug.dump_undefined Off Off xdebug.extended_info On On xdebug.file_link_format no value no value xdebug.idekey no value no value xdebug.manual_url http://www.php.net http://www.php.net xdebug.max_nesting_level 100 100 xdebug.overload_var_dump On On xdebug.profiler_aggregate Off Off xdebug.profiler_append Off Off xdebug.profiler_enable Off Off xdebug.profiler_enable_trigger Off Off xdebug.profiler_output_dir C:\xampp\tmp C:\xampp\tmp xdebug.profiler_output_name xdebug_profile.%p xdebug_profile.%p xdebug.remote_autostart Off Off xdebug.remote_connect_back Off Off xdebug.remote_cookie_expire_time 3600 3600 xdebug.remote_enable On On xdebug.remote_handler dbgp dbgp xdebug.remote_host localhost localhost xdebug.remote_log c:\xampp\apache\logs\xdebug.log c:\xampp\apache\logs\xdebug.log xdebug.remote_mode req req xdebug.remote_port 9000 9000 xdebug.scream Off Off xdebug.show_exception_trace Off Off xdebug.show_local_vars Off Off xdebug.show_mem_delta Off Off xdebug.trace_format 0 0 xdebug.trace_options 0 0 xdebug.trace_output_dir C:\xampp\tmp C:\xampp\tmp xdebug.trace_output_name trace.%c trace.%c xdebug.var_displ ay_max_children 128 128 xdebug.var_display_max_data 512 512 xdebug.var_display_max_depth 3 3 

这里是我重现问题的一个xdebug日志文件

 Log opened at 2011-01-03 08:56:22 -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///C:/xampp/htdocs/lab/zf-tutorial/public/index.php" language="PHP" protocol_version="1.0" appid="4404" idekey="ECLIPSE_DBGP"><engine version="2.1.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2010 by Derick Rethans]]></copyright></init> <- feature_set -i 33 -n show_hidden -v 1 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="33" feature="show_hidden" success="1"></response> <- feature_set -i 34 -n max_depth -v 3 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="34" feature="max_depth" success="1"></response> <- feature_set -i 35 -n max_children -v 31 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="35" feature="max_children" success="1"></response> <- feature_get -i 36 -n encoding -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="36" feature_name="encoding" supported="1"><![CDATA[iso-8859-1]]></response> <- feature_get -i 37 -n supports_async -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="37" feature_name="supports_async" supported="1"><![CDATA[0]]></response> <- stdout -i 38 -c 1 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stdout" transaction_id="38" success="1"></response> <- stderr -i 39 -c 1 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stderr" transaction_id="39" success="0"></response> <- breakpoint_set -i 40 -t line -f file:///C:%5Cxampp%5Chtdocs%5Clab%5Czf-tutorial%5Cpublic%5Cindex.php -n 21 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="40" id="44040001"></response> <- run -i 41 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="41" status="break" reason="ok"><xdebug:message filename="file:///C:/xampp/htdocs/lab/zf-tutorial/public/index.php" lineno="21"></xdebug:message></response> <- stack_get -i 42 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="42"><stack where="{main}" level="0" type="file" filename="file:///C:/xampp/htdocs/lab/zf-tutorial/public/index.php" lineno="21"></stack></response> <- stack_get -i 43 -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="43"><stack where="{main}" level="0" type="file" filename="file:///C:/xampp/htdocs/lab/zf-tutorial/public/index.php" lineno="21"></stack></response> <- eval -i 44 -- JHRoaXMtPmZpZWxkc1snYm9vbF9jb21wbGV0ZSdd -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="44"><property address="92404284" type="bool"><![CDATA[-1]]></property></response> <- eval -i 45 -- JHRoaXMtPnN0YWdlLT5nZXQoJ2Jvb2xfY29tcGxldGUnKQ== -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="45"><property address="92404284" type="bool"><![CDATA[-1]]></property></response> <- eval -i 46 -- JHRoaXMtPmZpZWxkc1snYm9vbF9jb21wbGV0ZSdd -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="46"><property address="92404284" type="bool"><![CDATA[-1]]></property></response> <- eval -i 47 -- JHRoaXMtPnN0YWdlLT5nZXQoJ2Jvb2xfY29tcGxldGUnKQ== -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="47"><property address="92404284" type="bool"><![CDATA[-1]]></property></response> === breakpoint reached, execution pauses. In eclipse I click "step over" <- step_over -i 48 === end of log 

本文听起来很有希望

XDebug和Eclipse(在其开发环境中)都可以使用DBGp协议。 基于这篇文章,你可能会通过搞乱Apache的.htaccess文件或者运行一个DBGp代理(不pipe是什么)来搞定事情。 文章中的进一步细节。

我怀疑XDebug和Eclipse连接到相同的PHPdebugging会话,踩在一个脚趾,导致Hilarity Ensue。

那还是“未定义的行为”。 无论哪种方式。

wooooooooooooo

https://bugs.eclipse.org/bugs/show_bug.cgi?id=312951#c8

创build一个新的工作区允许我debugging成功。

现在我最好的猜测是什么造成了这个问题,在同一个ip中有两个项目在同一个工作空间中,而不同的虚拟主机。

所以我不会那样做。

这可能听起来像一个愚蠢的问题,如果是的话,我表示歉意,但是您是否在您的Eclipsedebuggingconfiguration中创build了一个映射到您的新虚拟主机的新PHP服务器?

每当我创build一个新的虚拟主机时,我通常会在该configuration中创build一个全新的“debuggingconfiguration” 一个新的PHP服务器,映射到虚拟主机,以便在启动新的会话时从“debuggingconfiguration”下拉列表中轻松select它。

对于任何想知道的人来说,我可以通过Run – >“Debug Configurations …”来完成这个任务,从左边的菜单中select“PHP Web Page”,点击new +(如果已经有了,则复制),然后在服务器选项卡,其中是说“PHP服务器”,我单击“新build”,然后键入文档根虚拟主机的URL。

现在我最好的猜测是什么造成了这个问题,在同一个ip中有两个项目在同一个工作空间中,而不同的虚拟主机。

那么我正在debugging以及两个项目,在相同的IP和使用Apache不同VHosts相同的Eclipse工作区。

而我没有遇到你的问题。

虽然我的apache和东西位于debian的vmware仿真,我的Eclipse驻留在WinXP。

最好

拉斐尔