개발 기본
디버깅(Debugging)
디버깅은 프로그램이 예상과 다르게 동작하는 원인을 찾고, 수정한 뒤 다시 확인하는 과정입니다.
쉬운 설명
AI가 만든 신청 페이지에서 버튼을 눌렀는데 아무 일도 일어나지 않을 수 있어요. 이때 코드를 무작정 다시 만드는 대신, 어떤 행동에서 문제가 생기는지 재현하고 실행 기록이나 값을 살펴봐요. 원인을 좁혀 수정한 뒤 같은 행동으로 문제가 해결됐는지 확인하는 과정이 디버깅이에요. 오류 메시지가 없더라도 계산 결과가 틀리거나 버튼이 엉뚱한 곳으로 이동하면 디버깅이 필요해요.
이런 상황에서 만나요
스터디 참가 인원 두 칸에 2와 3을 넣었는데 합계가 5가 아니라 23으로 나온다고 해 볼게요. 화면에 보이는 숫자만 보고는 입력값이 숫자로 처리됐는지 알 수 없어요.
왜 2와 3의 합계가 23으로 나왔을까요?
입력: 2, 3
기대: 5
실제: 23
a = "2" b = "3" typeof a → "string" a + b → "23"
Number(a) + Number(b) → 5
- 1같은 입력으로 문제가 다시 생기는지 확인해요.
- 2따옴표 안의 값은 문자열이고, +가 두 문자열을 이어요.
- 3숫자로 변환한 뒤 같은 입력으로 결과를 확인해요.
문제가 생긴 입력값과 기대한 결과를 먼저 적어요. 계산 직전의 값과 자료형을 확인하면, 이 예시에서는 숫자가 아니라 문자열 두 개를 이어 붙였다는 원인을 찾을 수 있어요. 수정 후에는 같은 입력뿐 아니라 빈칸이나 숫자가 아닌 입력도 어떻게 처리할지 확인해요.
헷갈리기 쉬운 점
AI에게 “오류 고쳐 줘”라고 하면 되지 않나요?
어느 화면에서 무엇을 했고, 어떤 결과를 기대했으며, 실제로 무엇이 나왔는지를 함께 알려 주면 좋아요. 오류가 있다면 문구와 발생 위치도 전달해요. AI가 제안한 원인은 아직 가설이므로, 확인 방법과 수정 후 재검증까지 요청해요.
한꺼번에 여러 부분을 바꾸면 무엇 때문에 해결됐는지 알기 어려워져요. 원인 후보를 하나씩 확인하고, 관련 없는 변경은 분리해요.
왜 알아야 할까요?
“합계가 이상해요” 대신 “입력값이 문자열이라 2와 3이 23으로 합쳐져요”처럼 문제를 설명할 수 있어요. AI의 수정 제안이 실제 원인을 다루는지도 판단하기 쉬워져요.
조금 더 자세히
로그는 실행 중의 값이나 사건을 남긴 기록입니다. 중단점은 특정 위치에서 실행을 잠시 멈추는 표시로, 그 순간의 변수와 코드 흐름을 살펴볼 수 있습니다.
테스트는 정한 조건에서 기대한 결과가 나오는지 확인하고, 디버깅은 어긋난 이유를 조사합니다. 해결한 문제를 테스트로 남기면 같은 오류가 다시 생겼을 때 발견하기 쉽습니다.
직접 사용할 때 확인해 보세요
- 문제가 재현되는 입력과 순서를 기록한다
- 기대 결과와 실제 결과를 비교한다
- 수정 뒤 같은 조건과 경계 조건을 다시 확인한다