티스토리 뷰

현재 Lua로 프로그래밍을 하고 있는데.... 골치덩이 버그를 만났다. 근 1시간 30분 쯤을 붙잡고 있었던 것 같다.

Lua는 보통 require 하는 방식으로 구동이되어지는 것 같은데
require을 하면 소스들이 Lua Cache에 저장된다. (앞에서 살펴본 적이 있음.)
이 때문인지는 확실히 모르겠는데....
오늘 버그가 발생했는데 문제의 원흉은 전역 변수를 생성과 동시에 초기화하는데에 있었다.
시간과 관련된 변수였는데, 이 변수가 초기화가 제대로 안되서 씬 변경 함수가 두 번 불려져서
특정 씬을 처음에는 정상적으로 표현하는데 다음에 다시 그 씬으로 가면 씬을 표현하지 못하고 바로 다음씬으로 넘어가는 것이다.
시간과 관련해서 씬을 변환해주는 방식이었는데 시간과 관련된 변수가 잘못되어 있으니....
문제가 발생할 수 밖에 없었던 것이다.

평소에도 조금씩 느껴왔지만 오늘 특히 느낀 것이 "코딩 할 때 규칙을 정해놓자." 였다.
물론 거창한 법칙 같은 것을 정하는 것이 아니라 아주 기초적이지만 오류가 발생할 확률이 높은 것에 대해서는
자신만의 법칙을 정해두는 것이 좋을 것 같다.
오늘의 사건을 예로 들면 변수를 선언할 때는 바로 초기화를 하지 않도록 하자(실수할 가능성이 있으므로) 정도가 되겠다.

다행히 버그를 잡아서 이제 잘 수 있을 것 같다.
이 버그 잡기 전엔 잠 못 잔다 라는 마음으로 독하게 소스 코드를 한 자 한 자 읽어서 버그를 고칠 수가 있었다.
선배님들의 마음을 조금이나마 이해할 수 있을 것 같다.
내 게임 같이 작은 게임은 소스 코드가 적으니 그나마 괜찮지만
커다란 프로젝트라면 사소한 버그를 찾기 위해 얼마나 힘들까.... 
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday