디버그모드 : 프로그램이 멈추고 상태를 보여주는 모드(살펴보고 싶은 곳에 브레이크 포인트 -> 디버그 모드)
frames : 브레이크포인트가 실행된 자리 까지 어떠한 스택들이 실행되었는지 나타냄
Variales : 지역 스코프에 담겨져있는 변수의 정보
resume 버튼 : 다음 브레이크 포인트로 넘어감 ":>"모양
step over : 다음 줄로 넘어감
step into : 해당 줄에서 실행 된 메서드 안으로 한 단계 들어감
-> 찾고자 하는 흐름을 스택을 쌓으며 점점 안으로 들어갈 수 있음
step out : step into의 반대 개념, 실행을 시키고 나옴
drop frame : step out과 유사하나, 차이점이 있다면 실행 되지 않고 step out함
run to cursor : break point 없어도 커서가 가르키는 부분으로 넘어갈 수 있음
evaluate : break point에서의 해당 스코프에서 실행 가능한 메서드를 실행해볼 수 있음
-> getSize() 등 정의된 메서드 활용
-> 단 주의해야 할 점은 실제로 메서드가 적용이 됨
-> add 메서드 등 주의
-> shift + enter : 2줄 이상 작성할 수 있음
watch : 브레이크포인트 걸릴 때마다 evaluate를 미리 지정해둔것을 계속 알려줌
-> ex) for문에 객체 생성할 때 지정 : user.getName() => 이름 확인 가능
for문 사이즈가 커질 경우 step over를 활용하기에 실수할 수도 있음
ex) 사이즈 63 중 50번쨰 확인 -> 여러번 넘기다 보면 놓칠 수도 있음
-> 다시 처음부터 확인 필요
break point 우클릭 -> 컨디션 설정 가능 -> boolean으로 설정할 수 있음
-> break point에서 쓸 수 있는 메서드 모두 사용 가능
ex) user.getName().equals("구구")
-> break point 빨간점에 "?"가 생김(컨디션이 걸렸음)
-> 복잡한 for문 또는 while문에 활용 가능
외부 라이브러리가 끼면 브레이크포인트가 외부 라이브러리로 날아감 -> resume 누르면 다음으로 넘어감
-> 외부 라이브러리로 step over가 된다는 점은 해당 지점을 의심해볼 만 함
-> watch 활용하여 인자가 잘 들어왔는지 확인
-> evaluate에 명령어를 작성하여 어디 부분이 에러인지 확인
디버그 모드 중 코드 수정하면 반영 x -> 다시 브레이크포인트 잡고 디버그모드 재실행