디버깅의 이유
광주 인공지능 사관학교 pre-course로 제공받은 elice 의 디버깅 강의 정리입니다.
1. 디버딩의 필요
1.1. Bug (버그)
- 코드가 원하는 대로 동작하지 않는 모든 경우
- 프로그램이 죽는 (크래시가 발생하는) 경우
- 예상한 속도보다 훨씬 느리게 동작하는 경우
- 잘못된 결과를 출력하는 경우
- 코드 설계 상 일어나면 안되는 상황이 일어난 경우
1.2. Exception (예외)
- 일반적이지 않은 코드의 동작
- 사용자의 프로그램을 강제 종료 하는 경우
- 분수의 분모에 0 이 들어가는 경우
- 열고자 하는 파일이 존재하지 않는 경우
- 인터넷이 불안정한 경우
버그와 예외의 차이는 '원하는 대로'에 있는 것 같다.
1.3. Exception handling (예외 처리)
- 만약 파일을 불러오는 중에 인터넷이 끊긴다면 ?
- 처리되지 않은 예외는 버그를 만들 수 있음
개발자는 사용자의 다양한 상황을 예측할 수 있어야한다.
2. 디버깅이 뭐야?
- 사용 / 테스트 중 찾아낸 버그를 없애 나가는 과정
- 버그의 원인을 찾고
- 발생한 버그를 해결하고
- 비슷한 버그의 재발을 방지
2.1. 버그의 원인 찾기
- 어떤 상황에서, 어떤 조작을 했을 때 일어나는가?
- 얼마나 잦은 빈도로 발생하는가?
- 에러 메시지가 뜬다면 내용이 무엇인가?
2.2. 발생한 버그 해결하기
- 버그가 발생한 원인을 해결하려면 어떻게 해야하는가?
- 새로운 코드가 일으킬 새로운 버그는 없는가?
2.3. 버그 재발 방지하기
- 버그를 일으킨 코드가 다른 곳에서 사용되는가?
- 비슷한 설계를 이용한 다른 코드는 없는가?
- 고친 코드의 약점은 없는가?
- 코드를 지속적으로 검증할 방법은 무엇인가?
3. 디버깅이 중요한 이유
3.1. 사용자 경험과 직결된다.
3.2. 처음부터 완벽한 코드는 없다.
- 빠르게 문제를 파악 / 해결하는 것이 중요
- 너무 잘 작동되도 문제고 작동이 안되도 문제
실패는 성공의 어머니
- 많은 버그를 경험할수록, 더 안전한 코드를 설계할 수 있다.