프로그램언어/디버깅

리눅스 개발자를 위한 디버깅 기법

쫑환이 2012. 3. 6. 11:46
출처 임베디드 월드 : http://www.embeddedworld.co.kr/article/view.asp?article_idx=7347 

개발자가 제일 싫어하는 작업 세 가지로 첫째는 문서화작업, 둘째는 (자신이나 남이 작성한 코드) 디버깅, 셋째는 남의 코드 읽는 작업을 꼽을 수 있다. 개발자가 이런 작업을 싫어하는 이유는 단순하다. 실제로 자신이 프로그램을 작성하는 즐거움에서 멀어져 있기 때문이다. 디버깅은 버그 추적 과정 내내 상당한 인내심을 요할 뿐더러 투자한 시간 대비 성능이 떨어진다. 하지만 소프트웨어를 제작하는 어느 누구도 디버깅이라는 숙명을 피할 수 없기 때문에 어떤 수를 써서라도 디버깅과 친숙해져야 한다. 본 연재 기사에서는 리눅스를 중심으로 누구나 피하고 싶은 디버깅 작업을 도와주는 여러 가지 오픈 소스 도구에 대해 하나씩 소개하기로 한다.


디버깅만큼 학제간 연구를 많이 요구하는 분야는 없다. 자신이 속한 전문 분야에 대한 지식은 물론이고 컴퓨터 아키텍처와 운영체제를 시작으로 컴파일러 하부 구조, 라이브러리 특성, 응용 프로그램 요구사항에 깔린 여러 가지 다양한 가정, 프로그램 작성자의 의도를 꿰뚫는 심리학까지 개인이 알고 있는 모든 기술을 총동원해야 하기 때문이다. 따라서 디버깅에는 왕도가 없다. 아무리 좋은 디버깅 도구나 디버깅 방법론을 가져오더라도 실제 상황에 적용을 하지 못하면 아무 소용이 없기 때문이다. 하지만 사냥에 나선 사냥꾼이 엽총과 총알을 준비해야 하듯이 디버깅을 효율적으로 진행하기 위해 기본적인 도구는 제대로 챙겨놓아야 한다. 이번 회에서는 앞으로 연재할 여러 가지 다양한 디버깅 도구 탐험에 앞서 디버깅과 관련하여 기본적인 용어와 개념을 소개하도록 하겠다.