Как узнать в каком месте зависла программа на PHP?

PHP 5.3.1 что-то меня разочаровывает. Висит (по крайней мере под Windows XP) в самых неожиданных местах. Кстати, эти зависания подтолкнули меня к поиску способа, которым можно было бы отследить где зависла программа.

Способ проще некуда: ставим модуль PHP xdebug, прописываем его в php.ini (не забываем, что в PHP 5.3 всегда используется «zend_extension»), а в исследуемой программе указываем:
xdebug_start_trace('/какой/то/путь/имя-лога', XDEBUG_TRACE_APPEND);
После зависания идём в указанную папку и смотрим в лог, последняя строка в нём и есть источник зависания.
15 февраля 2010 15:06

overplumbum.livejournal.com (overplumbum.livejournal.com)
15 февраля 2010, 16:32

ну да, под nix-ами для это цели бывает полезен strace

bolk (bolknote.ru)
15 февраля 2010, 16:37, ответ предназначен overplumbum.livejournal.com:

Я тоже люблю strace, но системный вызов не скажет на какой строке в программе повис PHP, он просто покажет чем интерпретатор занимается, например, ждёт освобождения семафора.

Xdebug хорош тем, что он показывает конкретную функцию в программе, с его помощью я увидел, что у меня висит функция crypt.

Slaver (slaver.info)
16 февраля 2010, 01:15

А у тебя xdebug'овский var_dump() нормально в PHP 5.3 работает?

bolk (bolknote.ru)
16 февраля 2010, 09:33, ответ предназначен Slaver (slaver.info):

Да, вполне нормально. У меня Xdebug v2.1.0beta2-dev.

Slaver (slaver.info)
16 февраля 2010, 15:43, ответ предназначен bolk (bolknote.ru):

А какие настройки в php.ini прописаны? Я на двух серверах (и win, и nix) не могу разобраться с xdebug под PHP 5.3 :(

bolk (bolknote.ru)
16 февраля 2010, 16:46, ответ предназначен Slaver (slaver.info):

Всё незатейливо:

zend_extension="Z:\usr\local\php5\ext\php_xdebug.dll"

[xdebug]
xdebug.remote_enable = On

Slaver (slaver.info)
16 февраля 2010, 18:46, ответ предназначен bolk (bolknote.ru):

Спасибо!
Я просто не ту VC-версию для win использовал :)

bolk (bolknote.ru)
16 февраля 2010, 18:54, ответ предназначен Slaver (slaver.info):

Бывает :)

Slaver (slaver.info)
16 февраля 2010, 19:23

О, на шикарный баг xdebug для PHP 5.3 сейчас нарвался. Помучался полчаса, пока не погуглил: http://bugs.xdebug.org/view.php?id=532
Пофиксили, но ещё не выложили официально.

bolk (bolknote.ru)
16 февраля 2010, 21:40, ответ предназначен Slaver (slaver.info):

Неприятно, да.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)