디버깅(영어: debugging) 또는 디버그(영어: debug)는 컴퓨터 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산(버그)을 찾아내고 수정하는 작업 과정이다. 일반적으로 디버깅을 하는 방법으로 체크를 통한 테스트, 기계를 사용하는 테스트, 실제 데이터를 사용해 테스트하는 법이 있다.[1]

소프트웨어 개발 프로세스
활동과 단계
요구사항 분석 · 기능 명세
구조 · 설계
구현 · 테스팅
배치 · 유지보수
개발 모형
애자일 소프트웨어 개발 · 클린룸
DSDM · 순차점증적 개발 · 반복형 개발
RAD · RUP · 나선 모형
폭포수 모델 · 익스트림 프로그래밍
스크럼 · V 모델 · TDD
지원 활동
구성 관리 · 문서화
품질보증 · 프로젝트 관리
사용자 경험 설계
도구
컴파일러 · 디버거 · 프로파일러
GUI 디자이너 · 통합 개발 환경

용어의 기원

편집

버그(bug)와 디버깅(debugging)이라는 용어는 1940년대 그레이스 호퍼가 기원이다.[2] 그러나 "기술적 오류"라는 문맥에서의 "버그"는 적어도 1878년과 토머스 에디슨으로 거슬러 올라간다. (소프트웨어 버그 문서 참고)

도구

편집

디버거(debugger)는 디버그를 돕는 도구이다. 디버거는 주로 원하는 코드에 중단점을 지정하여 프로그램 실행을 정지하고, 메모리에 저장된 값을 살펴보며, 실행을 재개하거나, 코드를 단계적으로 실행하는 등의 동작을 한다. 고급 디버거들은 메모리 충돌 감지, 메모리 누수 감지, 다중 스레드 관리 등의 기능도 지원한다.

안티 디버깅

편집

안티 디버깅(Anti-Debugging)이란 디버깅을 방해하고 분석을 방해하는 기술이다.

디버깅을 당한다면 해당 디버거 프로그램을 종료시키거나 에러를 발생시키는 방법등 다양한 방법을 사용하여 분석을 방해한다. 안티 디버깅 기술에는 수 많은 방법이 존재하며 발전하고 있으며 그에 따라 이를 우회하는 기술도 계속적으로 발전하고 있다.

같이 보기

편집

각주

편집
  1. 정익사 출판,《순서도 작성》. p.16
  2. InfoWorld Oct 5, 1981