Intellij 디버거 느림 : 메서드 중단 점이 디버깅 속도를 크게 저하시킬 수 있습니다.


87

intellij 디버거를 시작하면 스크린 샷에서 볼 수있는 힌트가 나타납니다. 디버거를 시작하는 데 많은 시간이 걸립니다. 이 문제를 해결하는 방법?여기에 이미지 설명 입력

답변:


186

메서드 중단 점을 끕니다. Run |을 통해 모든 중단 점을 볼 수 있습니다. 중단 점보기 (Ctrl-Shift -F8)


25
하지만 확실히 중단 점을 제거하면 디버깅의 목적이 실패합니까? 아니면 뭔가 빠졌어요.
arush436

16
@ arush436 "메서드 중단 점"(! = 일반 중단 점)이 필요한 상황의 수는 매우 제한적입니다.
로빈

28
그렇다면 메서드 중단 점과 일반 중단 점의 차이점은 무엇입니까?
jrahhali


4
다음은 다양한 유형의 중단 점에 대한 업데이트 된 링크 입니다.
Cameron

12

IDEA 2017.1에서 에뮬레이트 된 메서드 중단 점이 도입되었습니다. https://www.jetbrains.com/help/idea/using-breakpoints.html#method_breakpoint 성능 저하없이 메서드 중단 점을 사용할 수 있습니다. 기본적으로 활성화됩니다.


이 메시지가 표시되면 팝업에서 "에뮬레이션 취소"를 클릭했을 수 있습니다. 다시 활성화하려면 show-breakpoints의 중단 점으로 이동하여 "Emulated"를 선택합니다.
Captain Man

7

JetBrains 팀 : "Method 중단 점은 JVM 설계로 인해 디버거 속도를 상당히 느리게하므로 평가하는 데 비용이 많이 듭니다. 메서드 중단 점을 제거하고 일반 줄 중단 점 사용을 고려하십시오." 참조 .

짧게 말하면 근본적인 문제는 JPDAMethod Entry & Method Exit 기능 을 사용하여 Method Breakpoints를 구현하는 것 입니다. 이 구현은 이벤트마다 발생하는 JVM을 필요로 어떤 스레드가 입력하는 모든 방법을 때 어떤 스레드가 종료 어떤 방법을.


7

여기에 이미지 설명 입력

디버그 패널에서 메서드 중단 점을 끕니다. 다음은 스크린 샷입니다.


5

코드에서 빨간색 다이아몬드 아이콘 (빨간색 원이 아님)을 찾으세요.이 아이콘은 메서드 중단 점을 나타냅니다. 대부분은 Kotlin의 get () / set () 메서드에서 설정했을 것입니다.


0

내가 따르는 실용적인 조언 : 1. 앱이 실행되는 동안 모든 중단 점을 음소거합니다. 2. 해당 흐름을 디버깅하는 동안에 만 중단 점을 활성화합니다.

물론 앱 시작 중에 발생하는 무언가를 디버그하려는 경우에는 도움이되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.