Итак, eclipse и xdebug заходят в бар, и мой сервер apache умирает.

44

Я использую windows xp x86, wamp, apache2, php 5.3 x86, eclipse php и xdebug, работающие на localhost как виртуальный хост, так и https virtualhost

версия для eclipse
Eclipse для разработчиков PHP Версия: Helios Release Build id: 20100617-1415

Мне удалось как-то успешно настроить eclipse и xdebug, и все было хорошо.

Затем мне пришлось создать ветвь svn моего проекта и перенастроить apache с двумя новыми виртуальными хостами и обновить файлы хостов Windows.

Теперь, когда я запускаю режим отладки в eclipse, все умирает.

В частности, Если я не установил точки останова, приложение работает нормально, за исключением проблемы, которую я пытаюсь отлаживать в первую очередь.

Если я устанавливаю точку останова, приложение останавливается в точке останова, и затмение, похоже, удерживает мяч. Но теперь, когда я нажимаю кнопку "Продолжить" или перешагнуваю, или шагаю, или чихаю, eclipse говорит мне, что выполнение возобновилось, но приложение продолжает зависать, и я должен перезапустить apache.

Я подозреваю, что есть разрыв в связи между eclipse и xdebug, потому что мне кажется, что eclipse отправляет мою команду continue или step over, но xdebug ее не получает.

Но даже если в этом случае я не знаю, что с этим делать. Где я должен искать?

Обновление:
Я успешно смог отладить с помощью notepad ++, его плагин xdebug и, как пещерный человек, напечатал & XDEBUG_SESSION_START = session_name в URL-адресе. Однако, несмотря на мою любовь к npp, его отладочный плагин довольно глючит...

Итак, я заметил объявление о stackoverflow для чего-то, называемого phpstorm, которое, как утверждается, было легким, но полнофункциональным php ide, с поддержкой native xdebug. Демонстрация потребовала перезагрузки, чтобы заставить ее работать, и это похоже на работу с шаткой таблицей чертежей, но ей очень хорошо удалось отладить как мое маленькое тестовое приложение, так и реальное приложение, что больше, чем я могу сказать для eclipse at момент, хотя, вероятно, моя ошибка.

Я, вероятно, должен был опубликовать это раньше:/Вот мой раздел 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
  • 0
    Я не могу помочь, но у меня была похожая проблема с аварийным завершением xdebug, затмением / возобновлением случайно. Это все еще случается время от времени, но я не уверен почему. Мне будет интересно увидеть ответ. Ох, и +1 за освежающий юмор: D
  • 36
    +1 за заголовок, и если кто-нибудь отредактирует его, позвольте мне знать, и я отзову его для вас (или переверну ;) ) ~~~ Что касается фактической проблемы, idk, но похоже, что вы знаете, где перерыв есть (между eclipse и xdebug) ... я не использую eclipse / apache, поэтому не могу вам помочь, но желаю вам удачи.
Показать ещё 5 комментариев
Теги:
xdebug
debugging

4 ответа

2
Лучший ответ

wooooooooooooo

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

Создание нового рабочего пространства позволяет мне успешно отлаживать.

В настоящее время мое лучшее предположение о том, что вызвало это, состоит из двух проектов в одном и том же рабочем пространстве с разными vhosts в одном и том же ip.

Поэтому я не собираюсь этого делать больше.

  • 0
    Итак, как именно это работает? У вас есть отдельные папки в веб-корне, которые вы используете в качестве рабочих пространств? Я не могу понять это, чтобы решить мою проблему.
  • 0
    Каждое веб-приложение имеет собственный веб-корень, который настроен как виртуальный хост Apache. Я создал новое рабочее пространство Eclipse, затем новый проект, создал из существующего источника и выбрал webroot конкретного приложения.
2

Эта статья звучит многообещающе.

Оба XDebug и Eclipse (в своем php dev env) могут использовать протокол DBGp по внешнему виду. Основываясь на этой статье, вы можете заставить все работать, возиться с файлом Apache.htaccess [s] или запустить прокси-сервер DBGp (независимо от того, что это). Дополнительная информация в статье.

Я подозреваю, что и XDebug, и Eclipse подключаются к одному сеансу отладки PHP, наступая друг на друга, заставляя Hilarity обеспечивать.

Это или "undefined поведение". В любом случае.

  • 0
    Разве xdebug и ide не должны подключаться к одному и тому же сеансу отладки? Если нет, есть ли простой способ проверить, так ли это? Я не думаю, что это проблема множественных клиентов, так как я могу связаться с другими отладчиками.
  • 0
    Я догадываюсь. Чтобы быть уверенным, попробуйте отключить отладку PHP в Eclipse. Также возможно, что Apache использует похожие механизмы отладки для PHP и what-else-eclipse-debugs, и эти две вещи запутываются. PS: это плагин XDebug в Eclipse или отдельное приложение? Похоже, что есть плагин XDebug, но если вы его не используете, это может быть проблемой.
1

В настоящее время мое лучшее предположение о том, что вызвало это, состоит из двух проектов в одном и том же рабочем пространстве с разными vhosts в одном и том же ip.

Ну, я тоже отлаживаю два проекта, в том же рабочем пространстве Eclipse с разными VHosts на одном IP-адресе и использую apache.

И я не испытываю ваших проблем.

Хотя мой apache и прочее находятся в эмуляции vmware debian, а мой Eclipse находится в WinXP.

Лучшие

Раффаэль

  • 0
    хм, в этом случае, может быть, это также может иметь отношение к обоим vhosts, которые я отлаживал на моем 127.0.0.1
  • 0
    А апач не жаловался на это? хм ... я не знаю
1

Это может звучать как глупый вопрос, и я приношу свои извинения, но если вы создали новый PHP-сервер внутри вашей конфигурации Eclipse Debug, который отображается на вашем новом виртуальном хосте?

Каждый раз, когда я создаю новый vhost, я обычно создаю совершенно новую конфигурацию Debug и новый PHP-сервер в этой конфигурации, которая сопоставляется с vhost, поэтому я могу легко выбрать его из настроек Debug Configs при запуске нового сессии.

Для кого-то интересно, я делаю это, перейдя в Run → "Debug Configurations...", выберите "PHP Web-страница" в меню слева, нажмите "new +" (или повторите, если у меня уже есть), и затем на вкладке "Сервер", где говорится "Сервер PHP", я нажимаю "Создать", а затем набираю URL-адрес vhost для корня документа.

  • 0
    Не глупо, но да, я сделал это. У меня есть виртуальный хост как для реального рабочего приложения, так и виртуальный хост для моей лаборатории / песочницы, для каждого отладка конфигурации, и у меня та же проблема с каждым

Ещё вопросы

Сообщество Overcoder
Наверх
Меню