Community

얼마 전에 '커리어 스킬' 책을 읽고 유용한 팁을 발견해서 공유합니다 😉 저자는 디버깅할 때 디버거를 쓰지말라고 합니다. 처음 저 문구를 보면 의아할 수도 있는데(저도 그랬습니다) 내용을 다 읽어

얼마 전에 '커리어 스킬' 책을 읽고 유용한 팁을 발견해서 공유합니다 😉 저자는 디버깅할 때 디버거를 쓰지말라고 합니다. 처음 저 문구를 보면 의아할 수도 있는데(저도 그랬습니다) 내용을 다 읽어보면 납득이 됩니다. 디버거에 의존을 할수록 엉뚱한 곳에 시간을 낭비하거나 운이 좋아 버그 위치를 발견하고 고치면 끝이라는 생각에 더 고민 없이넘어가서 추후 비슷한 에러를 마주했을 때 앞선 과정을 반복해야 할 것입니다. 저는 나름 vscode와 chrome 콘솔창에서 디버거를 사용해 실시간으로 변수를 추적하는 데는 익숙했고 잘 사용하는 편이라 착각했습니다. 하지만 정작 문제가 무엇이고 발생한 원인이 어디에 있을 지 추측하는 과정은 생략해왔습니다. 앞으로는 에러가 나면 곧장 디버거를 쓰기보다 두뇌를 쓰는 습관을 들여야겠습니다. ▪️ 디버깅이란 ? 코드베이스에서 문제의 근원을 찾아서 그 문제를 일으킬 만한 요인을 가려내고, 여러 가설을 시험해보는 과정을 통해 뿌리가 되는 진정한 원인을 찾고 그 원인을 제거한 후, 다시는 그 문제가 일어나지 않도록 하는 것 ▪️ 디버깅 규칙 1. 디버거를 쓰지 마라. 에러를 재현하기. 버그를 재현해서 진짜 버그가 발생한 게 맞는지 확인부터 하기. 간헐적으로 발생해 확실하게 재현하는 게 불가능 할 경우에는 코드에 로그문을 삽입하고 언제 어떤 조건에서 발생하는지에 관한 정보를 최대한 자세히 수집하기. 가능하다면 인공적으로 환경을 재현하기. 2. 앉아서 생각하라 문제를 일으킬 만한 원인이 무엇인지 생각하기. 시스템이 어떻게 작동하고 무엇이 이상을 일으켰는지 생각. 어디를 살펴보고 무엇을 찾을지 부터 아는 게 중요. 아무 생각도 안 나면 소스코드를 훑어보고 단서 찾기. 다음 단계로 가기 전에 적어도 2~3가지 가설 생각해내기 3. 가설을 테스트하라 자신이 세운 가설을 테스트할 단위 테스트를 작성. 단위 테스트를 작성하고 하나씩 통과할 때마다 가능성 제거 단위테스트를 쓰는 게 어렵거나 불가능할 때 디버거를 써도 좋다. 단 디버거를 쓰는 목적을 분명히 하라. 무슨 문제를 찾고 무엇을 확인했는지 정확히 알아라. 4. 가정을 확인하라 코드가 특정한 방식으로 작동한다거나 입력 또는 출력으로 어떤 값이 나와야 한다고 가정하는 경향이 있음. 이 가정을 단위테스트로 확인. 문제가 숨어있는 영역과 함께 반드시 작동해야 하는 사항도 단위테스트로 확인. 디버거를 쓴다면 이미 세운 특정한 가정이 유효한지 확인하는 용도로만 활용하라. 5. 분할 정복하라 코드를 반으로 계속 잘라서(주석처리) 어느 지점에서 정상으로 동작하고 에러가 발생하는 지 찾기. 6. 고칠 때는 이유를 이해하라. 그 문제가 왜 고쳤는지 이해하지 못하면 아직 문제를 다 고친게 아니다. 고쳐졌는지만 확인하지 말고 회귀테스트를 작성해서 그런 일이 다시 발생하지 않게 해라. 버그가 발생한 클래스의 다른 인스턴스를 살펴보라. 버그는 서로 붙어 다니는 경향이 있다.

알림

알림이 없습니다