나만의 작은 도서관

[TIL] 240725 캠프 102일차: 하이젠버그(Heisenbug)와 console.log 본문

Today I Learn

[TIL] 240725 캠프 102일차: 하이젠버그(Heisenbug)와 console.log

pledge24 2024. 7. 25. 23:05

오늘 배운 내용                                     

하이젠버그(Heisenbug)와 console.log

하이젠버그(Heisenbug)는 버그를 디버깅을 하려고 하면 그 버그가 나타나지 않는 버그를 의미한다. Heisenbug는 불확정성의 원리를 발견한 물리학자 Heisenberg의 이름에서 나왔다.
 
하이젠버그는 디버깅을 하기 위해 디버거를 연결하거나 디버깅 코드를 삽입하면 이러한 행동이 시스템에 영향을 주어 버그가 나타나지 않는다. 하이젠버그는 잡기 매우 까다로운 버그이다.
 
버그가 타이밍과 관련되어 있거나 메모리가 다른 영역으로 침범한 버그일 경우 디버깅 코드를 삽입하면 버그가 재현 되지 않고 다른 현상이 나타날 수 있다.

 

실제로 겪은 하이젠버그...

최종 프로젝트에서 제공받은 클라이언트는 오류가 많았다. 그런데 그렇게 많던 오류들이 console.log를 찍으면 왜인지는 몰라도 클라이언트에서 패킷을 정상적으로 받지 못하는 문제가 해결되었다. 실제로 하이젠버그를 겪은 것이다. 비즈니스 로직과 전혀 상관없는 console.log를 찍었을 때 왜 정상적으로 패킷을 받는 지는 아직도 밝혀지지 않았지만, 추측으로는 console.log가 실행시간이 상대적으로 긴 것 때문에 클라이언트에 패킷이 다 들어올때까지 기다리는 효과가 있는게 아닌가 싶다.

오늘 한 일                                       

더보기
  • 최종 프로젝트
    • 맡은 작업 마무리 후 다른 팀원들 코드 분석