Читать на других языках: English Español 中文
В типичном сценарии отладки вы должны установить точки останова, чтобы сообщить отладчику, когда приостановить вашу программу. Точка останова обычно соответствует моменту, который отмечает отправную точку для дальнейшего исследования.
Решение, где установить точку останова, может оказаться непростой задачей. Могут возникнуть ситуации, когда точная строка неясна, или вы можете предпочесть приостановить программу по времени, а не по конкретному коду.
В этой статье мы рассмотрим функциональность Программы паузы IntelliJ IDEA — менее известного метода отладки, который может быть чрезвычайно мощным в некоторых сценариях, включая описанные выше. Мы обсудим варианты его использования и ограничения, а также шаг за шагом раскроем секрет.
Программа паузы — это функция отладчика IntelliJ IDEA, которая позволяет произвольно приостанавливать работу приложения в любой момент времени. Более того, вам даже не нужно знать код приложения. На самом деле, вы можете просто игнорировать это!
Чтобы приостановить программу, нажмите Приостановить программу на панели инструментов отладчика. Затем программа остановится прямо в середине того, что вы делаете.
На первый взгляд приостановленная программа может выглядеть точно так же, как программа, приостановленная в точке останова. Однако это верно лишь до определенной степени.
Было бы правильно считать Программу паузы своего рода дамп потока плюс. Вы по-прежнему можете проверять как переменные, так и потоки, как обычно. Однако некоторые более продвинутые функции, такие как Оценить выражение, работать не будут.
Существует бесчисленное множество способов использовать Программу паузы. Его часто можно использовать взаимозаменяемо с традиционными точками останова. Однако существуют сценарии, в которых использование Программы паузы является более подходящим подходом. Давайте рассмотрим некоторые из них.
Если вы столкнулись с зависанием пользовательского интерфейса (UI), обычно это связано с блокировкой потока пользовательского интерфейса.
Программа паузы может быть полезна в этом случае, поскольку она позволяет приостановить работу приложения, пока оно не отвечает, и проверить стек вызовов потока пользовательского интерфейса. Обычно этого достаточно для диагностики проблемы.
Как упоминалось ранее, Программа паузы позволяет вам просто игнорировать исходный код, который в любом случае может отсутствовать. Хотя этот сценарий не очень распространен, когда вы столкнетесь с ним, точки останова не помогут.
Здесь в игру вступает Программа паузы!
Если вы подозреваете, что возникла проблема с синхронизацией, например взаимоблокировка или активная блокировка, Программа паузы поможет вам найти точные потоки и блокировки, вызывающие проблему.
В этом случае приостановите работу программы и просмотрите список тем. Он покажет, какие потоки заблокированы. При переходе к точке выполнения вы также увидите критические разделы, где они заблокированы. Эта информация может помочь вам найти решение.
Как я упоминал ранее, Программа паузы ограничивает ваш доступ к некоторым расширенным функциям отладчика. Если вы пытались использовать определенные функции, когда приложение приостановлено, возможно, вы видели сообщение об ошибке: Невозможно оценить методы после действия приостановки.
Однако есть способ обойти это ограничение.
После того как вы приостановили работу приложения, продолжайте выполнять любые действия шаг за шагом. Подойдет Step Into или Step Over. Как только это будет сделано, вы перейдете в обычный сеанс отладки, аналогичный тому, как вы приостанавливаете приложение с помощью точки останова. Все расширенные функции теперь разблокированы!
На сегодня всё! Надеюсь, эти советы и рекомендации окажутся вам полезными.
Если вас интересуют дополнительные статьи, связанные с отладкой и профилированием, ознакомьтесь с другими моими статьями:
Если вы хотите, чтобы я рассказал вам что-то особенное об отладке в Java, не стесняйтесь обращаться к нам! Ваше мнение поможет расставить приоритеты и опубликовать тот контент, который вам наиболее интересен.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3