Один из наиболее распространенных методов отладки, отладка printf, особенно популярен, поскольку большинство людей изучают его интуитивно при написании своих первых программ.
Отладка'printf' очень доступна, поскольку для нее не нужны никакие специальные инструменты. Когда вы сталкиваетесь с первыми ошибками, даже до того, как вы узнаете, что такое отладчик, естественным будет заставить вашу программу шаг за шагом печатать переменные, чтобы вы могли следить за выполнением в консоли.
Хотя это один из самых простых методов отладки, он также широко используется опытными разработчиками. Он может помочь вам исследовать проблемы любого типа, такие как неоптимальные процедуры, противоречивое состояние, проблемы многопоточности и т. д.
Как я уже упоминал, этот метод не требует использования каких-либо специальных инструментов, таких как IDE. Однако, если вы его используете, это может сделать запись состояния программы еще более эффективной.
Примечание: В этой статье показаны возможности IntelliJ IDEA. Подобные функции могут быть доступны или не доступны в других IDE. Если вы используете другой инструмент, проверьте его документацию, чтобы убедиться, что эти функции также присутствуют.
IntelliJ IDEA предоставляет живые шаблоны для наиболее распространенных шаблонов ведения журналов отладки. Чтобы использовать действующий шаблон для ведения журнала отладки, введите соответствующее сокращение и нажмите Tab. IntelliJ IDEA сгенерирует оператор печати и вставит его в курсор.
Давайте рассмотрим пару примеров.
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutp' aquí, luego presione Tab return null; }
Сгенерированный код:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("in = " in ", mask = " mask ", newColor = " newColor); return null; }
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); // escriba 'soutv' aquí, presione Tab y luego seleccione el valor return a * b * parameter; }
Сгенерированный код:
public static double coolMethod(double parameter) { double a = Math.random(); double b = Math.random(); System.out.println("b = " b); return a * b * parameter; }
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { // escriba 'soutm' aquí return null; }
Сгенерированный код:
public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) { System.out.println("ImageUtils.recolor"); return null; }
Одним из недостатков отладки с помощью операторов печати является то, что они требуют дополнительных затрат на ручное управление. Вы не можете быстро включать и выключать их, и вы определенно не хотите совершить ошибку, отправив их и запустив в производство.
По этой причине, если вам нужно что-то записать в журнал в целях отладки, я бы рекомендовал использовать точки останова для журналирования, поскольку с ними гораздо проще обращаться.
Чтобы установить точку останова ведения журнала, удерживайте клавишу Shift, затем щелкните поле. В отличие от обычной точки останова, она не приостанавливает выполнение программы, а вместо этого выводит на консоль.
По умолчанию это сообщение о том, что программа достигла этой строки. Вы также можете использовать параметры рядом с флажком Оценить и записать в настройках точки останова, если вы предпочитаете регистрировать текущую трассировку стека или результат пользовательского выражения.
Примечание: будьте осторожны с выражениями протоколирования. Оценка тех из них, которые вызывают побочные эффекты, может стать источником новых ошибок или неожиданного поведения. Кроме того, при использовании в горячем коде они могут значительно замедлить работу вашей программы.
Когда точек останова в журнале становится много, вы можете отслеживать их и управлять ими в диалоговом окне Точки останова (Выполнить | Просмотреть точки останова ):
Вы даже можете создавать для них собственные группы:
Это поможет вам централизованно управлять точками останова. Например, вы можете создать группу, связанную с определенной ошибкой, и сохранить ее на будущее. Когда проблема исчезнет, вы просто выключите его. Таким образом, если проблема появится снова, вам не придется создавать все заново. Вы просто снова включаете группу.
Для событий, которые происходят часто во время выполнения программы, регистрация каждого события по отдельности может быть излишним. Это не только приводит к переполнению консоли сообщениями, но и большое количество операций ввода-вывода может значительно замедлить сеанс отладки.
Для этих событий может быть полезно использовать функцию Количество проходов. Доступ к нему можно получить в диалоговом окне Точки останова.
.После того, как вы установили для Количество проходов определенное значение, соответствующая точка останова будет срабатывать только при каждом ее достижении n-раз, гарантируя, что ведение журнала не станет помехой.
Независимо от того, вставляете ли вы операторы печати или устанавливаете точки останова журналирования для отладки, современные инструменты имеют функции, позволяющие улучшить процесс отладки. В этом посте я хотел убедиться, что вы знаете об этих маленьких хитростях, которые делают весь процесс более приятным.
Если вас интересуют другие статьи, связанные с отладкой и профилированием, ознакомьтесь с другими моими статьями:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3