티스토리 뷰
문제를 진단하기 위해 코드를 고쳤을 때 아무런 효과가 없다면 원했던 부분을 고친 게 아니다.
혹시 고친 파일이 아닌 다른 파일을 컴파일 하는건 아닌지? 컴파일을 제대로 해놓곤 다른 바이너리를 실행하는건 아닌지? 고친 코드가 프리프로세서 때문에 비활성화돼 있는건 아닌지? 브라우저가 개발 서버가 아닌 제품 서버에 접속하는 건 아닌지?
이런 함정은 너무 흔하고 햇갈려서 빠지기 쉽다. 항상 마음 한구석에 함정에 대한 가능성을 염두에 두는 것 외에는 다른 방도가 없다.
함정에 빠진 것을 알 수 있는 가장 쉬운 방법은 코드에 일부러 명확한 실패 코드를 추가하는 것이다. 명백한 에러 문법을 추가하거나 System.exit() 를 호출하는 방법도 있다. 이렇게 해도 컴파일이 잘 되고 프로그램도 죽지 않고 실행된다면 내가 지금 무엇을 고치고 있는지부터 알아봐야 할 때다.
이게 정말로 무서운 이유는 너무나 단순한 문제이기 때문에 교훈으로 삼지 못하고 똑같은 실수를 반복하기 쉽기 때문이다. 특히나 경력이 많거나 자신감이 충만한 개발자일수록 이런 함정에 빠지기 쉽다.
뭔가 상황이 이상하게 돌아간다 싶으면 잠시 멈추고 실패 코드를 이용해서 내가 지금 현실세계에 있는게 맞는지 확인해보자. 개발자 성향상 설명하기 어려운일이 발생하면 문제를 해결하고 싶다는 생각에 점점 빠져들어 본질을 보지 못하고 쓸데없는 시간을 낭비할 소지가 크다.
내가 일하면서 경험했던 황당한 실수는 아래 정도가 기억난다.
- 다른 파일을 수정하고 있던 상황 (동일 프로젝트 소스를 여러폴더에 받아서 작업중이던 상황)
- 컴파일이 동작하지 않아 기존 바이너리가 계속 실행되고 있던 상황
- 알고보니 배포가 동작하지 않고 있던 상황 (배포 스크립트의 이슈로 실패를 인지할 수 없는 상황)
- 테스트 하고 있는 환경과 다른 환경에 배포를 하고 있던 상황
'디버깅' 카테고리의 다른 글
[디버깅] 개발자와 디버깅 (0) | 2020.12.29 |
---|---|
[디버깅] 무엇을 찾으려는지 알고 있는가? (0) | 2018.10.27 |
[디버깅] 디버깅의 정의 (0) | 2018.10.23 |
[디버깅] 한 번에 한 문제만 (0) | 2018.10.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- AWS
- 일 잘하는 사람은 단순하게 말합니다
- Debug It! 실용주의 디버깅
- SSL
- https
- 코드악취
- 디버깅
- 질의함수
- amazon vpc
- amazon aurora
- 코드스멜
- 위임
- 매개변수화
- 그림으로 배우는 HTTP & Network
- 제어플래그
- 그림으로 공부하는 IT 인프라 구조
- 안심 첫 문장
- 지시의 언어
- HTTP
- aws fargate
- 리팩터링이란
- 박소연
- 마틴파울러
- 조건부 로직
- 리팩토링
- 일잘러
- Debugging
- 변경함수
- Refactoring
- Debug
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함