Intellij Debugger lento: los puntos de interrupción del método pueden ralentizar drásticamente la depuración

81

Cuando inicio el depurador intellij, aparece la pista que puedes ver en la captura de pantalla. el depurador tarda mucho en iniciarse. ¿Cómo resolver este problema?ingrese la descripción de la imagen aquí

Ronald
fuente

Respuestas:

179

Desactive los puntos de interrupción del método. Puede ver todos sus puntos de interrupción a través de Ejecutar | Ver puntos de interrupción (Ctrl - Mayús -F8)

Robin
fuente
24
¿Pero seguramente eliminar sus puntos de interrupción anula el propósito de la depuración? O me estoy perdiendo algo.
arush436
14
@ arush436 El número de situaciones en las que necesita un "punto de interrupción del método" (! = punto de interrupción regular) es muy limitado.
Robin
27
¿Y cuál es la diferencia entonces entre un punto de interrupción de método y un punto de interrupción regular?
jrahhali
2
Aquí hay un enlace actualizado a los diferentes tipos de puntos de interrupción .
Cameron
11

En IDEA 2017.1, se introdujeron los puntos de interrupción de métodos emulados: https://www.jetbrains.com/help/idea/using-breakpoints.html#method_breakpoint Permiten utilizar puntos de interrupción de métodos sin penalización de rendimiento. Habilitado por defecto.

Egor
fuente
Si ve este mensaje, es posible que haya hecho clic (como yo) en "Cancelar emulación" en una ventana emergente. Para volver a habilitarlo, vaya al punto de interrupción en show-breakpoints y marque "Emulado".
Captain Man
7

Del equipo de JetBrains: "Los puntos de interrupción del método ralentizarán mucho el depurador debido al diseño de la JVM, son costosos de evaluar. Elimine los puntos de interrupción del método y considere usar los puntos de interrupción de línea regulares". Ver más .

Para abreviar la historia, parece que el problema principal es que los puntos de interrupción de métodos se implementan mediante la función de entrada y salida de método de JPDA . Esta implementación requiere que la JVM dispare un evento cada vez que un hilo ingresa a cualquier método y cuando un hilo sale de cualquier método.

nhoxbypass
fuente
5

Busque los íconos de diamante rojo (no círculos rojos) en su código, estos representan los puntos de interrupción del método. Lo más probable es que los establezca en los métodos get () / set () en Kotlin.

espada
fuente
5

ingrese la descripción de la imagen aquí

Desactive el punto de interrupción del método en el panel de depuración. Aquí hay una captura de pantalla.

Chetan
fuente
0

Consejos prácticos que sigo: 1. silenciar todos los puntos de interrupción mientras se inicia la aplicación 2. habilitar los puntos de interrupción solo mientras depuras ese flujo.

Por supuesto, no ayudará si está intentando depurar algo que sucede durante el inicio de la aplicación.

Sudip Bhandari
fuente