E D R , A S I H C RSS

디버그

last modified: 2014-08-12 01:50:58 by Contributors

Contents

1. 컴퓨터 프로그래밍 과정 중의 디버그
1.1. 개요
1.2. 과정
1.2.1. 관련 문서
2. iOS/Mac 개발자 인터뷰 팟캐스트


1. 컴퓨터 프로그래밍 과정 중의 디버그

1.1. 개요

디버그(Debug)는 프로그래밍 과정중에 발생하는 오류나 비정상적인 연산 즉 버그를 찾고 수정하는 것이다. 이 과정을 디버깅(Debugging)이라 하기도 한다.

프로그래밍을 하는 모든 사람이 뼈저리게 겪는 격언이 바로 '버그가 없는 프로그램은 없다.' 혹은 '한번에 돌아가는 프로그램은 없다' 라는 것. 이는 일종의 불가항력 같은 것이라서 아무리 능력이 좋거나 경험이 많더라도 버그가 없는 프로그램을 만들 수는 없다. 다만 영리한 사람은 오류 지향적인 설계보다는 견고한 설계를 지향하고 버그가 나더라도 쉽게 잡아낼 수 있도록 유도하여 짠다.

비전공자나 프로그래밍 경험이 없는 많은 사람들이 "그냥 뚝딱뚝딱 만들고 돌아가게 하면 되는거 아냐?" 라고 많이 오해하는 것과는 반대로 프로그램 제작 과정에서 코딩이 2할이면 디버깅은 8할이라고 보면 된다. 프로그램이라는 것은 사람이 만드는 것이기 때문에 이 디버그 과정은 프로그래밍 과정에서 필수적으로 행해야 하는 것 중 하나이다.

생기는 이유도 천차 만별인데 굳이 사람의 사소한 오타로 생기는 버그부터, 특수한 케이스를 미처 생각 못한 논리적인 버그도 있고, 컴퓨터 시스템 상의 한계나 혹은 만든 프로그램의 실행을 담당하는 OS의 버그로 인해 버그가 생겨날 수도 있다. 아니면 진짜로 컴퓨터에 벌레(Bug)가 들어가거나[1]

1.2. 과정

디버그를 하는 것 자체는 말로 설명하면 굉장히 쉽다. 오류 혹은 비정상적인 작동을 하는 부분을 찾아 수정하면 된다. 하지만 찾는게 쉽다면 전세계의 프로그래머들이 밤낮으로 매달릴 이유가 없을 것이다. 프로그래머가 만드는 과정에서 미처 고려하지 못한 부분이나 실수를 찾는 것이기 때문에 이 오류가 난 부분을 찾기란 굉장히 어렵다. 프로그램 코드의 길이가 수십줄~수천줄 정도라면 근성으로 코드를 샅샅히 뒤져 찾을 수도 있겠지만 수만줄 이상이 넘어가면 답이 없다. 프로그래머가 예측하는 부분 안에서 나오길 바라는 수 밖에. 그렇다고 이걸 안하면 수십억이 날아가는 건 기본, 심한 경우 소송까지 갈 수도 있다. 버그 하나가 회사 하나를 통째로 날려먹은 사례도 있다.

이런 빡침악명과 사례는 이미 오래전부터 알려져 있어서 지금에 이르러서는 이 디버깅을 도와주는 프로그램 적인 도구들이 많이 등장한 상태이다. 프로그램 내에 존재하는 모든 변수 값을 표시하거나, 프로그램 코드를 한줄 한줄 멈춰가며 구동시키는 것 등이 대표적으로 디버깅에 도움을 주는 것들이다. 하지만 이것들은 말 그대로 도움을 주는 것이지 직접 버그를 찾아주는 것은 절대 아니다. 가령 1+2를 해야할 프로그램에서 프로그래머의 실수로 1-2를 적는다면 의도하지 않은 결과가 나오기 때문에 버그이지만 컴퓨터 입장에선 어쨌든 실행은 멀쩡히 되기 때문에 오류로 인식하지 않는다. 이런 부분을 찾아야 하는 것.

또한 이 디버깅이 얼마만큼의 시간이 걸리는 지는 아무도 모른다. 일단 버그가 정확히 몇 개다. 라고 단정지을 수 있는 것도 아니고 버그가 발생되는 코드가 프로그래머가 생각하는 부분에 있다는 보장이 전혀 없기 때문이다. 프로그래머가 생각한 부분에서 버그가 발생되는 코드가 발견 되었다면 디버깅 시간은 짧아질 것이고 전혀 엉뚱한 곳에서 나온다면 디버깅에 걸리는 시간은 한없이 길어진다. 그리고 안타깝게도 대부분의 버그는 전혀 예상치 못한 곳에서 뜬금없이 튀어나온다. 그리고 예상치 못한 야근으로 이어진다.

이런 지거리를 줄여주는것이 단위 테스트인데, xUnit등을 이용해서 자동화를 시켜놓으면 그동안의 뻘짓이 허무하게 느껴질정도로 디버깅 시간이 확 줄어든다. 눈도 안아프고 말이다 하지만 선임자가 똥을 싸놓았다면 어떨까?

2. iOS/Mac 개발자 인터뷰 팟캐스트

Debug는 애플 관련 온라인 미디어인 iMore의 편집장 Rene Ritchie와 Guy English가 공동진행하는 인터뷰 형식의 팟캐스트로, 매 회마다 iOS/Mac 개발자를 초대하여 개발에 관련된 에피소드나 개발자로 일해온 경력 등을 소재로 얘기한다. 특히, 참여한 게스트 중에서는 애플에서 일한 경력이 있는 사람들도 있어 애플이 기업문화나 개발자들의 면면을 살짝이나마 알아볼 수 있다. 애플의 미국계정 팟캐스트의 테크놀로지 챠트에서는 늘 10위권에 들 정도로 인기가 있다. 공동 호스트인 Guy English는 탭 리벤지 개발에 참여한 것으로 유명하다.
----
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2014-08-12 01:50:58
Processing time 0.0599 sec