검수요청.png검수요청.png

디버깅

위키원
이동: 둘러보기, 검색

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

개요[편집]

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

어원[편집]

1945년 9월 9일 최초의 컴퓨터 버그;'디버깅'(debugging)이란 개념이 출현하게 된다. 컴퓨터를 사용하던 초장기 시절에 컴퓨터의 크기는 매우 컸다. 여러방에 연속으로 기계장치들을 연결해놓았다고 생각했을때, 어느날 컴퓨터가 제대로 작동되지않았다. 원인을 모르고 찾고 있던 중, 컴퓨터 부품 중 하나에 나방이 끼어있었고, 이 나방이 컴퓨터가 작동되지않는 문제의 원인이였던것이다. 이 과정에서 나방을 제거함으로써 오류가 해결되었고 이를 de + bug 했다는 의미로 디버깅이라는 말이 생겨나게 되었다. [1]

특징[편집]

기능[편집]

기능 설명
Debug 디버깅 모드에서 발생하는 메시지를 표시한다.
Breakpoints 디버깅 모드에서 일시 정지할 위치를 스크립트 코드상에 지정할 수 있다. 중단점으로 지정된 위치는 Breakpoints 창에서 목록 형태로 확인할 수 있다.
  • 중단점 설정 상태

- Enable : 중단점을 지정한 줄에서 실행을 멈춘다.

- Disable : 중단점을 비활성화한다. 애플리케이션 실행시 무시된다.

- Conditional Enable : 중단점에 설정된 조건이 일치할 경우에만 실행을 멈춘다.

- Conditional Disable : 조건부 중단점을 비활성화한다. 애플리케이션 실행시 무시된다.

Call Stack 현재 상태까지 거쳐온 함수를 역순으로 표시해준다. 함수를 더블 클릭하면 해당 소스의 위치로 이동합니다.
Variables 현재 상태에서 확인이 가능한 변수, 객체의 상태 값을 조회한다. 변수인 경우에는 해당 값을 보여주고, 객체인 경우에는 해당 객체의 속성을 트리 형태로 조회할 수 있다.
Watch 특정 변수나 객체의 값을 등록해놓고 변화되는 값을 관찰할 수 있다. 특히 스텝 기능을 사용할시 유용하다.

구성[편집]

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

테이블 디버깅[편집]

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

컴퓨터 디버깅[편집]

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

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

각주[편집]

  1. C언어 디버깅(debugging)〉, 《개인블로그》, 2015-11-02

참고자료[편집]

  • 넥사크로플랫폼 17 컴포넌트 활용 워크북 17.1.2.100,〈디버그 기능〉, 《넥사크로플랫폼》, 2020-06-06

같이 보기[편집]


  검수요청.png검수요청.png 이 디버깅 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.