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í

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)


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.


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.


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.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.