Home / AI / AI 용어사전 / 디버깅(Debugging) — AI가 코드 오류를 추적하는 과정
TERM
디버깅(Debugging) — AI가 코드 오류를 추적하는 과정
On this page
AI 코딩 도구가 오류 메시지를 뱉어낼 때, 그 원인을 찾아 수정하는 전 과정을 디버깅(Debugging) 이라 한다. 단순히 에러를 없애는 행위가 아니라, 코드가 왜 기대와 다르게 동작하는지 근거를 찾는 논리적 추적 과정이다.
정의
디버깅(Debugging) 은 소프트웨어의 버그(Bug)를 발견하고 원인을 분석해 수정하는 과정이다. 영어 'debug'는 '벌레를 제거한다'는 뜻이며, 1947년 하버드 마크 II 컴퓨터 릴레이 회로에 끼어든 실제 나방(Moth)을 제거한 기록에서 유래했다고 알려져 있다. 당시 기술자 그레이스 호퍼(Grace Hopper) 팀이 로그북에 "First actual case of bug being found"라고 기록한 것이 공식 어원으로 자주 인용된다.
현대 소프트웨어 개발에서 버그는 물리적 곤충과 무관하지만, 용어는 그대로 남아 의도하지 않은 동작이나 오류를 통칭한다.
상세 설명
디버깅의 핵심 도구는 세 가지다.
콘솔 로그(Console Log) 는 가장 원시적이지만 여전히 가장 많이 쓰이는 방법이다. console.log(), print(), fmt.Println() 등으로 변수 값이나 실행 흐름을 출력해 코드가 어느 지점에서 예상과 달리 동작하는지 파악한다. AI 코딩 도구(cursor, github-copilot 등)도 디버깅 시 콘솔 로그를 우선적으로 제안하는 경우가 많다.
스택 트레이스(Stack Trace) 는 오류 발생 시점까지의 함수 호출 순서를 역순으로 보여주는 출력이다. 예를 들어 Python의 Traceback (most recent call last): 이후 줄들이 스택 트레이스다. 가장 최근 호출이 가장 아래에 표시되므로, 아래에서 위로 읽어야 오류의 실제 발생 위치를 빠르게 파악할 수 있다.
브레이크포인트(Breakpoint) 는 ide 내장 디버거가 제공하는 기능으로, 특정 코드 줄에서 실행을 일시 정지시킨다. 정지된 상태에서 변수 값을 확인하고 한 줄씩 실행하며 오류 원인을 좁혀나갈 수 있다. VS Code, JetBrains 계열 IDE 모두 GUI 기반 브레이크포인트를 지원한다.
AI 코딩 도구는 에러 메시지를 입력받아 원인과 수정 방안을 자동 제안하는 방식으로 디버깅을 보조한다. 단, AI 제안이 항상 정확하지 않으므로 스택 트레이스를 직접 읽는 능력은 바이브코딩 시대에도 필수 역량으로 남아 있다.
예시
Python에서 흔히 발생하는 TypeError 디버깅 흐름:
def add(a, b):
return a + b
result = add("3", 4)
# TypeError: can only concatenate str (not "int") to str스택 트레이스를 보면 add("3", 4) 호출 줄이 원인임을 알 수 있다. a가 문자열, b가 정수여서 덧셈 연산이 실패한 것이다. 수정은 add(int("3"), 4) 또는 함수 내부에 타입 변환 로직을 추가하는 방식으로 이루어진다.
JavaScript에서는 console.log(typeof a, typeof b)를 삽입해 타입을 확인하는 것이 첫 번째 디버깅 단계다.
활용 사례
- AI 코드 생성 후 오류 수정: cursor나 github-copilot이 생성한 코드에서 런타임 오류 발생 시, 스택 트레이스를 AI에 다시 붙여넣어 수정 제안을 받는다
- 프로덕션 버그 추적: 서버 로그에서 스택 트레이스를 추출해 오류 발생 함수와 줄 번호를 특정한다
- 성능 디버깅: 크롬 DevTools의 Performance 탭이나 Python의
cProfile을 사용해 느린 구간을 시각적으로 확인한다 - 단위 테스트 실패 분석: 테스트 프레임워크(Jest, pytest)의 실패 메시지에서 기대값과 실제값 차이를 비교해 로직 오류를 추적한다
관련 용어
- ide — 통합 개발 환경. 브레이크포인트·인라인 디버거 등 시각적 디버깅 도구를 제공한다
- stack-trace — 함수 호출 스택 출력. 오류 발생 지점을 역추적하는 핵심 단서다
- unit-test — 함수 단위 자동 테스트. 버그를 배포 전에 잡아내는 예방적 디버깅 수단이다
- runtime-error — 코드 실행 중 발생하는 오류. 컴파일 오류와 달리 실행 전 탐지가 어렵다
- cursor — AI 우선 IDE. 오류 메시지를 자동 분석해 수정 제안을 제공한다