Intellij Debugger slow: punkty przerwania metod mogą znacznie spowolnić debugowanie

87

Kiedy uruchamiam debugger intellij, pojawia się podpowiedź, którą można zobaczyć na zrzucie ekranu. uruchomienie debuggera zajmuje dużo czasu. Jak rozwiązać ten problem?wprowadź opis obrazu tutaj

Ronald
źródło

Odpowiedzi:

186

Wyłącz punkty przerwania metody. Możesz zobaczyć wszystkie swoje punkty przerwania, klikając Uruchom | Wyświetl punkty przerwania (Ctrl - Shift -F8)

Rudzik
źródło
25
Ale na pewno usunięcie punktów przerwania jest sprzeczne z celem debugowania? Albo czegoś mi brakuje.
arush436
16
@ arush436 Liczba sytuacji, w których potrzebny jest „punkt przerwania metody” (! = zwykły punkt przerwania), jest bardzo ograniczona.
Robin
28
Jaka jest zatem różnica między punktem przerwania metody a zwykłym punktem przerwania?
jrahhali
6
@jrahhali Zobacz punkt przerwania metody i punkt przerwania linii
happy_coder
4
Oto zaktualizowany link do różnych typów punktów przerwania .
Cameron,
12

W IDEA 2017.1 wprowadzono emulowane punkty przerwania metody : https://www.jetbrains.com/help/idea/using-breakpoints.html#method_breakpoint Pozwalają one na używanie punktów przerwania metod bez utraty wydajności. Domyślnie włączone.

Egor
źródło
Jeśli widzisz ten komunikat, być może (tak jak ja) kliknąłeś „Anuluj emulację” w wyskakującym okienku. Aby go ponownie włączyć, przejdź do punktu przerwania w show-breakpoints i zaznacz „Emulowane”.
Kapitan Man
7

Od zespołu JetBrains: "Punkty przerwania metod bardzo spowalniają debugger z powodu projektu JVM, są drogie w ocenie. Usuń punkty przerwania metod i rozważ użycie zwykłych punktów przerwania linii.". Zobacz więcej .

Aby długie opowiadanie, wydaje się, że problemem jest to, że korzeń Metoda Wartości graniczne są realizowane za pomocą JPDA „s metody wprowadzania & Metoda Zakończ funkcję. Ta implementacja wymaga, aby maszyna JVM wyzwalała zdarzenie za każdym razem, gdy dowolny wątek przechodzi do dowolnej metody i gdy dowolny wątek kończy działanie dowolnej metody.

nhoxbypass
źródło
7

wprowadź opis obrazu tutaj

Wyłącz punkt przerwania metody z panelu debugowania. Oto zrzut ekranu.

Chetan
źródło
5

Poszukaj ikon z czerwonymi rombami (nie czerwonych okręgów) w kodzie, które reprezentują punkty przerwania metody. Najprawdopodobniej ustawiłeś je w metodach get () / set () w Kotlinie.

nóż
źródło
0

Praktyczna rada, której się trzymam: 1. wycisz wszystkie punkty przerwania, gdy aplikacja się zbliża 2. włączaj punkty przerwania tylko podczas debugowania tego przepływu.

Oczywiście nie pomoże, jeśli próbujesz debugować coś, co dzieje się podczas uruchamiania aplikacji.

Sudip Bhandari
źródło