#php #debugging
#php #отладка
Вопрос:
Я пытаюсь создать условный инструмент PHP debugger, который при вызове будет записывать определенные шаги в процессе выполнения, такие как позиция в коде, которая соответствует функции или уровню.
Я сформировал его как:
define("DEBUGGING", TRUE); //IF TRUE, TURNS ON CONDITIONAL CODE THAT RETURNS CODE FLOW
и
if (DEBUGGING) { echo "RETURN LINE OF CODE OR SOMETHING ELSE"; }
который я вставляю там, где это необходимо.
Есть ли лучший способ сделать это? Я включил все уровни предупреждения PHP, но этого недостаточно, так как я не знаю, какая часть кода была выполнена из-за избыточных функций.
Спасибо!
Ответ №1:
Вместо ненужного загромождения вашего кода вам следует просто установить Xdebug.
При возникновении ошибки в вашем коде будут выводиться полные трассировки стека в формате HTML.
Вот пример вывода, который я нашел через Google:
Кроме того, Xdebug обеспечивает удаленную отладку, так что вы можете использовать настоящий отладчик (я использую PhpStorm) для пошагового выполнения вашего кода.
Комментарии:
1. Спасибо! Возвращает ли X-Debug также результаты для выполнения хорошего кода? — Причина, по которой я спрашиваю, заключается в том, что у меня есть избыточные функции, которые учитывают различные ситуации сбоя и учитывают друг друга. Это означает, что если я не знаю, какая часть кода была точно выполнена, я не могу точно знать, действительно ли код работает или нет. Спасибо.
2. используйте try catch и выдайте исключение
3. Я не совсем понимаю, что вы имеете в виду. Наверняка результатом выполнения хорошего кода является то, что ваше приложение работает? Если вы хотите подтвердить путь выполнения кода, вы можете добавить что-то вроде
echo __FILE__ . ': ' . __LINE__;
в разных местах. Это выведет точное местоположение, в котором он размещен. Но это было бы проще сделать, используя настоящий отладчик.4. Я думаю, что OP хочет stacktrace, чтобы они могли проверить, что избыточный код не выполняется. Я предлагаю использовать исключения для обработки ваших ошибок.
5. В конце концов, я закончил добавлять комментарии к echo ФАЙЛУ . Мне нужно было проверить каждую непредвиденную ситуацию в рабочем коде. Больше ничего из того, что я пробовал, не сработало. Спасибо.
Ответ №2:
чтобы легко получить трассировку стека
try{
throw new Exception();
}catch(Exception $e ){
echo $e->getTraceAsString();
}
Это даст вам действительно хороший stacktrace.
Комментарии:
1. Спасибо; будет реализовано!