«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Улучшена отладка &#printf&#.

Улучшена отладка &#printf&#.

Опубликовано 3 ноября 2024 г.
Просматривать:597

Один из наиболее распространенных методов отладки, отладка 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;
}

Регистрация точек останова

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

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

Depuración

Чтобы установить точку останова ведения журнала, удерживайте клавишу Shift, затем щелкните поле. В отличие от обычной точки останова, она не приостанавливает выполнение программы, а вместо этого выводит на консоль.

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

Depuración

Примечание: будьте осторожны с выражениями протоколирования. Оценка тех из них, которые вызывают побочные эффекты, может стать источником новых ошибок или неожиданного поведения. Кроме того, при использовании в горячем коде они могут значительно замедлить работу вашей программы.

Когда точек останова в журнале становится много, вы можете отслеживать их и управлять ими в диалоговом окне Точки останова (Выполнить | Просмотреть точки останова ):

Depuración

Вы даже можете создавать для них собственные группы:

Depuración

Это поможет вам централизованно управлять точками останова. Например, вы можете создать группу, связанную с определенной ошибкой, и сохранить ее на будущее. Когда проблема исчезнет, ​​вы просто выключите его. Таким образом, если проблема появится снова, вам не придется создавать все заново. Вы просто снова включаете группу.

Журнал частых событий

Для событий, которые происходят часто во время выполнения программы, регистрация каждого события по отдельности может быть излишним. Это не только приводит к переполнению консоли сообщениями, но и большое количество операций ввода-вывода может значительно замедлить сеанс отладки.

Depuración

Для этих событий может быть полезно использовать функцию Количество проходов. Доступ к нему можно получить в диалоговом окне Точки останова.

.

Depuración

После того, как вы установили для Количество проходов определенное значение, соответствующая точка останова будет срабатывать только при каждом ее достижении n-раз, гарантируя, что ведение журнала не станет помехой.

Краткое содержание

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

Если вас интересуют другие статьи, связанные с отладкой и профилированием, ознакомьтесь с другими моими статьями:

  • Debugger.godMode() — взлом JVM-приложения с помощью отладчика
  • Устранение неполадок медленного отладчика
  • Что не так с createDirectories()? - Руководство по профилированию ЦП
  • Отладка без точек останова
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/flounder4130/depuracion-printf-mejorada-26l1?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3