Как сделать процесс отладки PHP?

#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

Кроме того, 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. Спасибо; будет реализовано!