Хобрук: Ваш путь к мастерству в программировании

PHPStorm, конфигурация точек останова: пример оцениваемого выражения журнала и введите допустимое выражение в поле параметра.?

Я собираюсь настроить параметры PHPStorm для отладки в PHP с помощью xDebug, читая эту страницу из руководства: http://www.jetbrains.com/phpstorm/webhelp/configuring-breakpoints.html

На шаге 2 есть: «Чтобы оценить выражение в контексте точки останова и отобразить его значение в консоли отладки, установите флажок Записывать оцененное выражение и введите допустимое выражение в поле параметра. .".

Теперь, что должно быть «действительным выражением»?

Например, моя точка останова («точки» — это правильный технический глагол/термин?) на строку 341 файла Joomla! файл библиотеки cms (см.: https://github.com/joomla/joomla-cms/blob/3.2.x/libraries/joomla/input/input.php#L341).

Это метод десериализации сериализованных строк, и он ломает мой модульный тест. Поэтому я хотел бы знать, какое значение имеет строка при передаче методу.

В строке 341, где тест прерывается, используется PHP-конструкция list() для присвоения трем различным свойствам несериализованных значений переданного $input.

Но функция unserialize($input) не работает, и я хотел бы знать, почему, поэтому я установил точку останова.

      /**
       * Method to unserialize the input.
       *
       * @param   string  $input  The serialized input.
       *
       * @return  JInput  The input object.
   335 *
   336 * @since   12.1
   337 */
   338 public function unserialize($input)
   339 {
   340     // Unserialize the options, data, and inputs.
() 341      list($this->options, $this->data, $this->inputs) = unserialize($input);
   342
   343      // Load the filter.
   344      if (isset($this->options['filter']))

    ...

Теперь, поскольку я хотел бы знать значение $input, поскольку это строка, которую unserialize() не может обработать, я думаю, что мне нужно использовать параметр «Выражение с оценкой журнала» в PHPStorm, чтобы он регистрировал в консоли значение $input, но, опять же, что я должен написать в поле PHPStorm?


  • Почему бы просто не поставить точку останова в строке 341 и не проверить значение $input во время выполнения? 09.07.2014
  • Да, делая это (используя точки останова), я обнаружил, что PHPStorm дает мне значения переменных (плюс другую информацию о других полезных вещах) во время выполнения: очень полезно. Меня смущали процессы и методы, которым я следовал до сих пор! Я начинаю лучше понимать, как пользоваться отладчиком: похоже на использование var_dump, но функция var_dump заменена точками останова. Нет? 09.07.2014
  • За исключением того, что в отличие от var_dump вы можете пошагово выполнять свой код без необходимости вводить код для его отладки. Конечно, вы также можете использовать Step Over и Step Into для каждой строки вашего кода и проверять изменяющиеся результаты по мере продвижения. 10.07.2014
  • Да, это действительно фантастика! Шагнуть вперед и войти... Я видел их, но еще не понял, как я могу их использовать... Я думаю, что мне следует еще немного изучить! 11.07.2014

Ответы:


1

Согласно системе отслеживания проблем, это все еще происходит или никогда не воспроизводилось. Билет еще открыт.

Однако, если вы хотите увидеть значение без приостановки выполнения кода, вы должны использовать эту опцию. В настоящее время вам также может потребоваться установить флажок Suspend.

Допустимое выражение в вашем случае будет просто $input. Вы можете быть более сложным, например, "$this->id is being validated.". Обратите внимание, что вы не включаете echo или что-то еще в выражение, это выражение.

По моему опыту консоль просто не обновляется. Вы можете ненадолго увидеть мерцание вывода при изменении фокуса из PHPStorm.

07.07.2015
Новые материалы

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

Что в лицо
Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..