의견.png

디버깅

해시넷
Asadal (토론 | 기여)님의 2020년 8월 4일 (화) 23:00 판 (같이 보기)
이동: 둘러보기, 검색

디버깅(debugging)이란 프로그램 개발의 마지막 단계에서 프로그램의 오류를 발견하고 그 원인을 밝히는 작업 과정을 말한다.

개요

버그(bug)는 벌레를 뜻하고 디버그(debug)는 원래 "해충을 잡다"라는 뜻으로서, 프로그램의 오류를 벌레에 비유하여 오류를 찾아 수정하는 일이라는 의미로 쓰인다. 하드웨어 분야에서 디버그는 H/W 장치의 설계 오류를 없앤다는 의미를 갖고 있는 반면, 프로그래밍에서 "디버깅한다"는 것은 프로그램의 잘못을 검출, 추적, 삭제한다는 뜻이다. 주로 디버그(debug)가 오류수정 작업을 뜻하는 반면, 작업 과정에 중점을 둔 어휘는 디버깅(debugging)을 쓴다. 즉, 오류 수정 작업은 디버그이고, 작업 과정은 디버깅이며, 오류 수정 소프트웨어는 디버거(debugger)라고 한다.

구성

디버깅하는 방법은 프로그래머가 직접 손으로 해보고 눈으로 확인하는 테이블 디버깅과 디버깅 소프트웨어를 이용하는 컴퓨터 디버깅이 있다.

테이블 디버깅

테이블 디버깅(table debugging)은 프로그램 리스트에서 오류의 원인을 추적하는 방법이다. 원시 프로그램을 읽어가며 분석하는 코드 리뷰(code review) 방식과 오류가 발생한 데이터를 사용하여 원시 프로그램을 추적하는 워크스루(walk-through) 방식으로 나뉜다.

컴퓨터 디버깅

컴퓨터 디버깅(computer debugging)은 프로그래머가 제공하는 각종 정보와 디버깅 소프트웨어를 이용하여 누구든지 디버깅할 수 있는 방식이다. 여기에는 디버거 방식과 디버그행 방식, 그리고 기계어 방식이 있다.

  • 디버거 방식 : 프로그램을 시험할 때 디버깅 모드로 컴파일하여 디버거 기능을 포함시켜 사용하면서 오류에 관한 각종 정보를 수집하는 방식이다. 원시 프로그램을 수정하는 일이 없이 정보를 수집할 수 있는 장점이 있으나, 디버깅에만 의존해야 하므로 정보를 수집할 수 있는 범위가 한정되어 있어 완벽하게 디버깅하기 어렵다.
  • 디버그행 방식 : 수집하고 싶은 정보를 출력하기 위한 디버깅용 명령을 미리 프로그램 곳곳에 삽입하여 실행시키는 방식이다. 프로그램이 각 지점을 정상적으로 통과하는지 확인한다. 이 방식은 세밀한 정보수집에 유용하지만 디버깅 완료 후 원시 프로그램을 수정해야 하는 번거로움이 있다.
  • 기계어 방식 : 정보를 수집하고자 하는 장소의 주소와 범위를 기계어 수준으로 지정하고, 운영체제의 디버깅 기능을 사용하여 정보를 수집하는 방식이다. 운영체제가 서비스하는 프로그램을 그대로 사용할 수 있다. 하지만 기계어이기 때문에 정보수집 및 분석이 어렵고 시간이 걸린다.

같이 보기


  의견.png 이 디버깅 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.