나만의 작은 도서관
[TIL] 240725 캠프 102일차: 하이젠버그(Heisenbug)와 console.log 본문
오늘 배운 내용
하이젠버그(Heisenbug)와 console.log
하이젠버그(Heisenbug)는 버그를 디버깅을 하려고 하면 그 버그가 나타나지 않는 버그를 의미한다. Heisenbug는 불확정성의 원리를 발견한 물리학자 Heisenberg의 이름에서 나왔다.
하이젠버그는 디버깅을 하기 위해 디버거를 연결하거나 디버깅 코드를 삽입하면 이러한 행동이 시스템에 영향을 주어 버그가 나타나지 않는다. 하이젠버그는 잡기 매우 까다로운 버그이다.
버그가 타이밍과 관련되어 있거나 메모리가 다른 영역으로 침범한 버그일 경우 디버깅 코드를 삽입하면 버그가 재현 되지 않고 다른 현상이 나타날 수 있다.
실제로 겪은 하이젠버그...
최종 프로젝트에서 제공받은 클라이언트는 오류가 많았다. 그런데 그렇게 많던 오류들이 console.log를 찍으면 왜인지는 몰라도 클라이언트에서 패킷을 정상적으로 받지 못하는 문제가 해결되었다. 실제로 하이젠버그를 겪은 것이다. 비즈니스 로직과 전혀 상관없는 console.log를 찍었을 때 왜 정상적으로 패킷을 받는 지는 아직도 밝혀지지 않았지만, 추측으로는 console.log가 실행시간이 상대적으로 긴 것 때문에 클라이언트에 패킷이 다 들어올때까지 기다리는 효과가 있는게 아닌가 싶다.
오늘 한 일
더보기
- 최종 프로젝트
- 맡은 작업 마무리 후 다른 팀원들 코드 분석
'Today I Learn' 카테고리의 다른 글
[TIL] 240726 캠프 103일차: 클라이언트가 패킷을 제대로 수신하지 못하고 오류해결(OnRecvCompleted Failed Google.ProtoBuf......) (0) | 2024.07.26 |
---|---|
[TIL] 240724 캠프 101일차: 캐릭터 디스폰을 배열로 묶어서 하는 이유, 유니티: protoBuf를 잘못 파싱하면 빈 중괄호가 나온다. (0) | 2024.07.24 |
[TIL] 240723 캠프 100일차: 프로토버프 컴파일러, 유니티 EventSystem (0) | 2024.07.23 |
[TIL] 240722 캠프 99일차: 2D 플랫포머-아틀라스와 애니메이션 (0) | 2024.07.22 |
[TIL] 240719 캠프 96일차: 유니티 2D 플랫포머 게임 제작 준비 (0) | 2024.07.19 |