php - see - Así que Eclipse y xdebug entran en un bar y mi servidor apache muere
xdebug php info (4)
En este momento, mi mejor conjetura en cuanto a lo que causó esto es tener dos proyectos en el mismo espacio de trabajo con diferentes fantasmas en la misma ip.
También estoy depurando dos proyectos, en el mismo espacio de trabajo Eclipse con diferentes VHosts en la misma IP y uso de Apache.
Y no estoy experimentando tus problemas.
Aunque mi apache y todo está ubicado en una emulación de vmware de Debian y mi Eclipse reside en WinXP.
Mejor
Raffael
Estoy usando windows xp x86, wamp, apache2, php 5.3 x86, eclipse php y xdebug, ejecutándome en localhost como un servidor virtual y un servidor virtual https
información de la versión del eclipse
Eclipse para desarrolladores de PHP Versión: Helios Release Build id: 20100617-1415
Había logrado con éxito, de alguna manera, configurar eclipse y xdebug y todo estaba bien.
Luego tuve que hacer una rama svn de mi proyecto, reconfigurar apache con 2 nuevos hosts virtuales y actualizar mis archivos host de Windows.
Ahora cuando lanzo el modo de depuración en eclipse todo muere.
Específicamente, si no establezco puntos de interrupción, la aplicación funciona bien, para el problema que estoy tratando de depurar debo evitar primero.
Si configuro un punto de interrupción, la aplicación se detiene en el punto de interrupción y el eclipse parece estar sosteniendo la pelota. Pero ahora, cuando presiono continuar, o paso, o paso, o estornudo, eclipse me dice que la ejecución se ha reanudado, pero la aplicación continúa bloqueándose, y tengo que reiniciar apache.
Sospecho que hay una interrupción en la comunicación entre eclipse y xdebug, porque me parece que eclipse está enviando mi comando de continuar o pasar, pero xdebug no lo está recibiendo.
Pero incluso si ese es el caso, no sé qué hacer al respecto. ¿Dónde debería estar mirando?
Actualizar:
Pude depurar con éxito utilizando notepad ++, su plugin xdebug y, como un hombre de las cavernas, escribiendo & XDEBUG_SESSION_START = session_name en la url. Sin embargo, a pesar de mi amor por npp, su plugin de depuración es bastante defectuoso ...
Así que me di cuenta de un anuncio en stackoverflow para algo llamado "phpstorm", que profesaba ser un php ligero pero completo, con soporte nativo de xdebug. La demostración requirió un reinicio para que funcione, y se siente como trabajar en una tabla de borrador inestable, pero logró depurar muy bien mi pequeña aplicación de prueba y la aplicación real, que es más de lo que puedo decir para el eclipse en el momento, a pesar de que es probablemente mi culpa.
Probablemente debería haber publicado esto antes: / Aquí está mi sección 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
Aquí hay un archivo de registro xdebug de cuando reproduzco el problema
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
Esto puede sonar como una pregunta tonta, y me disculpo si es así, pero ¿creó un nuevo servidor PHP dentro de su configuración de depuración Eclipse que se asigna a su nuevo host virtual?
Cada vez que creo un nuevo vhost, generalmente creo una Configuración de depuración totalmente nueva y un nuevo Servidor PHP dentro de esa configuración que se asigna al vhost, de modo que pueda seleccionarlo fácilmente desde el menú desplegable Configuraciones de depuración cuando inicie una nueva sesión.
Para cualquiera que se lo pregunte, hago esto yendo a Ejecutar -> "Configuraciones de depuración ...", selecciono "Página web de PHP" en el menú de la izquierda, hago clic en + (o duplicado si ya tengo uno), y luego bajo el Ficha del servidor, donde dice "Servidor PHP", hago clic en "Nuevo" y luego escribo la URL del vhost para la raíz del documento.
wooooooooooooo
https://bugs.eclipse.org/bugs/show_bug.cgi?id=312951#c8
Crear un nuevo espacio de trabajo me permite depurar con éxito.
En este momento, mi mejor conjetura en cuanto a lo que causó esto es tener dos proyectos en el mismo espacio de trabajo con diferentes fantasmas en la misma ip.
Así que no voy a hacer eso más.
Este artículo parece prometedor
Tanto XDebug como Eclipse (en su env php de php) pueden usar el protocolo DBGp a simple vista. Basado en ese artículo, es posible que pueda hacer que las cosas funcionen al interferir con los archivos .htaccess de Apache, o al ejecutar un proxy DBGp (lo que sea que sea). Más detalles en el artículo.
Sospecho que tanto XDebug como Eclipse se están conectando a la misma sesión de depuración de PHP, pisando uno con los dedos del pie, haciendo que Hilarity llegue a Ensue.
Eso o "comportamiento indefinido". De cualquier manera.