Повільний налагоджувач Intellij: точки зупинки методу можуть різко уповільнити налагодження


87

Коли я запускаю налагоджувач intellij, це підказка, яку ви можете побачити на скріншоті. відладчик займає багато часу для запуску. Як вирішити цю проблему?введіть тут опис зображення

Відповіді:


186

Вимкніть точки зупинку методу. Ви можете побачити всі свої точки зупинки через Run | Точки зупинки перегляду (Ctrl - Shift -F8)


25
Але, безумовно, видалення точок зупинки перемагає мету налагодження? Або я чогось пропускаю.
arush436

16
@ arush436 Кількість ситуацій, коли вам потрібна "точка зупинки методу" (! = звичайна точка зупинки), дуже обмежена.
Робін

28
І яка тоді різниця між точкою зупинки методу та звичайною точкою зупинки?
jrahhali


4
Ось оновлене посилання на різні типи точок зупинки .
Камерон

12

В IDEA 2017.1 були введені точки емуляції методу зупинки: https://www.jetbrains.com/help/idea/using-breakpoints.html#method_breakpoint Вони дозволяють використовувати точки зупинку методу без покарання за продуктивність. Увімкнено за замовчуванням.


Якщо ви бачите це повідомлення, можливо, ви (як і я) натиснули "Скасувати емуляцію" у спливаючому вікні. Щоб повторно ввімкнути його, перейдіть до точки розриву в точках перерви шоу і поставте прапорець біля пункту "Емульований".
Капітан Мен

7

Від команди JetBrains: "Точки зупинки методу набагато сповільнять налагодження через дизайн JVM, їх дорого оцінювати. Видаліть точки зупинки методу та розгляньте можливість використання звичайних точок зупинки рядків.". Дивіться більше .

Щоб зробити довгу історію короткою, це здається , що корінь проблема в тому , що метод Breakpoints реалізуються за допомогою JPDA «s Метод введення і метод Вихід функції. Ця реалізація вимагає, щоб JVM запускав подію кожного разу, коли будь-який потік входить у будь-який метод і коли будь-який потік виходить із будь-якого методу.


7

введіть тут опис зображення

Вимкніть точку зупинки методу з панелі налагодження. Ось скріншот.


5

Шукайте червоні значки з діамантами (а не червоні кола) у вашому коді, вони представляють точки зупинки методу. Швидше за все, ви встановлюєте їх за методами get () / set () у Kotlin.


0

Практична порада, якої я дотримуюся: 1. вимкнути всі точки зупинку під час появи програми; 2. увімкнути точки зупинки лише під час налагодження цього потоку.

Звичайно, це не допоможе, якщо ви намагаєтеся налагодити щось, що відбувається під час запуску програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.