디버깅

F5 : 다음 중단점 혹은 프로그램 끝까지 실행 F10 : 단순히 다음 라인으로 진행 F11 : 호출된 함수 내부로 진입

중단점 항목에서 중단점들을 간편하게 관리 가능 중첩된 함수 호출시 호출 스택 정보가 유용하게 사용됨
중단점에 조건식을 걸어줄 수도 있음
중단점에서 로그 메세지를 출력하도록 할 경우 중단하는 대신 메시지를 디버그 콘솔에 표시함

코드를 읽는 것보다 디버깅을 하는 것이 훨씬 효율적임


디버깅 문제 풀이 #1 / #2 / #3

Q1 : 인수가 설정된 생성자에서 변수를 초기화하지 않음

Q2 : 배열의 인덱스 범위를 벗어남

Q3 : hp가 음수가 되는 경우를 상정하지 않음

Q4 : 오버플로우가 발생하는 경우를 상정하지 않음

Q5 : 0으로 나눠지는 경우를 상정하지 않음

Q6 : 무한한 재귀로 인한 스택오버플로우 발생

Q7 : 소멸자를 가상 함수로 선언하지 않아 부모 클래스의 소멸자만 실행됨

Q8 : 동적 할당되지 않은 지역변수에 delete를 시도함

Q9 : 이미 해제된 메모리에 대해 해제를 시도함

Q10 : 해제시킨 메모리에 접근함(use after free)