Как узнать, где остановился сценарий?

Мне было интересно, есть ли способ узнать, где остановился скрипт (например: файл + строка), который был бы полезен для отладки или для удаления глупых вызовов «выхода», потерянных где-то в коде.

заранее спасибо


person HappyDeveloper    schedule 19.10.2010    source источник
comment
что значит - остановился? по какой причине? Если это из-за какой-либо ошибки, в сообщении об ошибке всегда есть номер строки.   -  person Your Common Sense    schedule 19.10.2010
comment
Знать причину - это один из способов узнать, где она остановилась. Я знаю, что об ошибках сообщает номер строки, пожалуйста, будьте серьезны. Если сценарий остановился из-за вызова exit () без аргументов, он ничего не скажет.   -  person HappyDeveloper    schedule 20.10.2010


Ответы (3)


Неправильно (и я прошу прощения за то, что не проверил его сначала): Вы можете использовать register_shutdown_function в сочетании с debug_backtrace.

См. Здесь дубликат вашего вопроса: Самый быстрый способ определить, где находится скрипт PHP выходы.

person Alin Purcaru    schedule 19.10.2010
comment
Я думал об этом, но пробовали ли вы это когда-нибудь? Я получаю только 1 след, и это совершенно бесполезно. Похоже, он вызывается из-за пределов стека вызовов - person HappyDeveloper; 19.10.2010

Если вы хотите удалить выход из сценария, попробуйте использовать пакет PHP Code Sniffer PEAR http://pear.php.net/package/PHP_CodeSniffer

Просто создайте сниффер, чтобы узнать, где в коде находятся все выходы (вы получите отчет о файле и строке).

Если вы хотите узнать, на какой строке остановился сценарий, используйте отладчик, и вы можете получить трассировку стека, чтобы узнать последнюю строку, выполненную сценарием (Xdebug прост в использовании и настройке). Любой отладчик серьезно снизит производительность, поскольку ему нужно управлять большим объемом памяти.

person MANCHUCK    schedule 19.10.2010

Я не уверен, какую IDE вы используете (если есть), но с xdebug это было бы тривиально. Я лично использую его с netbeans, и он отлично работает, хотя его немного сложно настроить. Это позволит вам шаг за шагом пройтись по вашему коду и показать, где именно он завершается.

person ozruiz    schedule 19.10.2010