의견.png

"디버깅"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
잔글 (같이 보기)
3번째 줄: 3번째 줄:
 
== 개요 ==
 
== 개요 ==
 
[[버그]](bug)는 벌레를 뜻하고 '''디버그'''(debug)는 원래 "해충을 잡다"라는 뜻으로서, 프로그램의 오류를 벌레에 비유하여 오류를 찾아 수정하는 일이라는 의미로 쓰인다. 하드웨어 분야에서 디버그는 H/W 장치의 설계 오류를 없앤다는 의미를 갖고 있는 반면, [[프로그래밍]]에서 "디버깅한다"는 것은 프로그램의 잘못을 검출, 추적, 삭제한다는 뜻이다. 주로 디버그(debug)가 오류수정 작업을 뜻하는 반면, 작업 과정에 중점을 둔 어휘는 '''디버깅'''(debugging)을 쓴다. 즉, 오류 수정 작업은 디버그이고, 작업 과정은 디버깅이며, 오류 수정 소프트웨어는 '''디버거'''(debugger)라고 한다.
 
[[버그]](bug)는 벌레를 뜻하고 '''디버그'''(debug)는 원래 "해충을 잡다"라는 뜻으로서, 프로그램의 오류를 벌레에 비유하여 오류를 찾아 수정하는 일이라는 의미로 쓰인다. 하드웨어 분야에서 디버그는 H/W 장치의 설계 오류를 없앤다는 의미를 갖고 있는 반면, [[프로그래밍]]에서 "디버깅한다"는 것은 프로그램의 잘못을 검출, 추적, 삭제한다는 뜻이다. 주로 디버그(debug)가 오류수정 작업을 뜻하는 반면, 작업 과정에 중점을 둔 어휘는 '''디버깅'''(debugging)을 쓴다. 즉, 오류 수정 작업은 디버그이고, 작업 과정은 디버깅이며, 오류 수정 소프트웨어는 '''디버거'''(debugger)라고 한다.
 +
 +
==어원==
 +
1945년 9월 9일 최초의 컴퓨터 버그;'[[디버깅]]'(debugging)이란 개념이 출현하게 된다. 컴퓨터를 사용하던 초장기 시절에 컴퓨터의 크기는 매우 컸다. 여러방에 연속으로 기계장치들을 연결해놓았다고 생각했을때, 어느날 컴퓨터가 제대로 작동되지않았다. 원인을 모르고 찾고 있던 중, 컴퓨터 부품 중 하나에 나방이 끼어있었고, 이 나방이 컴퓨터가 작동되지않는 문제의 원인이였던것이다. 이 과정에서 나방을 제거함으로써 오류가 해결되었고 이를 de + bug 했다는 의미로 디버깅이라는 말이 생겨나게 되었다. <ref name="행복하세요..">〈[https://m.blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220526812365&proxyReferer=https:%2F%2Fwww.google.com%2F C언어 디버깅(debugging)]〉, 《개인블로그》, 2015-11-02 </ref>
  
 
== 구성 ==
 
== 구성 ==

2020년 9월 1일 (화) 15:13 판

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

개요

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

어원

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

구성

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

테이블 디버깅

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

컴퓨터 디버깅

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

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

같이 보기


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

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