프로그램의 오류를 검출하기 위해 만들어진 도구. 프로그램의 목적에 일치하지 않게 작성된 코드를 버그(bug)라 하고, 이것을 검출하고 고치는 행위를 디버그 라고 한다. 또 디버그를 행하기 위해 필요한 도구를 디버거 라 한다. 일반적으로 디버거는 다음과 같은 기능을 가지고 있어야 한다. 첫째, 프로그램의 실행을 중간에 멈추거나 계속할 수 있어야 한다. 둘째, 레지스터의 값이나 변수 의 값을 읽거나 변경시킬 수 있어야 한다. 세째, 기계어 프로그램을 역어셈블(disassemble)해서 표시할 수 있어야 한다. 넷째, 스텝 실행이 가능해야 한다.