어제 하루종일.. 실무에서 쓰려고 만들어놨던 델파이 컴포넌트에서 나타난 버그 하나 때문에 하루를 완전히 버렸습니다.
에디트를 상속받은 컴포넌트라서 디버깅이 좀 더 까다로운데, 완전히 작업을 끝냈다고 생각했던 컴포넌트가 실무에 적용하는 과정에서 전혀 동작을 안하더군요.
사무실에서 막차 시간인 두시 반까지 뒤져봐도 도저히 원인을 찾을 수가 없어서 터덜터덜 집으로 돌아왔죠.
집에서도 다시 여섯시 반까지 뒤져봤습니다만 도저히 잡을 수가 없더군요. VCL 소스와 제 소스까지 유닛 열개 정도를 오가면서 수백번 트레이스를 했습니다만 도대체 왜 동작을 안하는지 추적이 안되었습니다.
열두시에 일어나서 다시 뒤적거리기 시작했는데... 방금 너무나도 우연히 원인을 찾았답니다.
메시지핸들러에서 inhereted를 호출하지 않은 아주 사소한 문제로, 컴포넌트 전체가 아예 동작을 안하게 되었더군요. (C++에서는 상위 클래스의 Dispatch()를 호출하는 거죠)
요즘 들어, 버그가 나타나면 소스의 변경한 부분을 검증하기보다는 기계적으로 일단 트레이스부터 해보는 나쁜 버릇이 생겼는데, 그때문에 수백번 트레이스만 하다보니, 트레이스로는 찾을 수 없는 버그에는 속수무책이네요.
이런 사소한 실수는 단일 클래스였더라면 쉽게 찾을 수 있었을 텐데, 컴포넌트의 상속단계가 많다 보니 그만큼 유닛도 많고, 또 처리하는 메시지도 많다보니 이런 사소한 실수가 눈에 들어오지 않았던가 봅니다.
이렇게 하찮은 실수를 하다니... 하면서 한 30분동안 망연자실해서 헤롱거리다가..
그래도 잡은게 어디야, 하고 다시 힘내기로 했습니다.
오늘도 즐거운 하루!!! 힘내잣!!!
|
언제나 어렵게 만드는 문제는 항상 한줄로 해결되죠..
그 한줄 찾기가 힘들고요..
화이팅 입니다.