에러가 나면 어떻게 해결해요? (디버깅)

에러 걱정 없어요!

by 고코더

삼촌의 긴급 상황!

ChatGPT Image 2026년 1월 5일 오후 12_40_55.png

"앗! 이게 왜 안 되지?"

어린이 친구들 안녕하세요! 고코더 삼촌이에요. 지금 삼촌은 회사에서 정말 중요한 프로그램을 만들고 있어요. 오늘까지 꼭 완성해야 하는 프로젝트인데, 갑자기 화면에 빨간 글씨가 가득 나타났어요!


Error: Cannot read property 'name' of undefined
Line 42: user.name is not defined


아이고! 에러가 났네요. 삼촌의 이마에서 땀이 주르륵 흘러요. 하지만 걱정하지 마세요! 삼촌은 이런 상황에 익숙하거든요. 왜냐하면 개발자는 매일매일 이런 에러들을 만나고, 해결하거든요!

지금부터 삼촌과 함께 에러를 해결하는 모험을 떠나볼까요? 마치 탐정이 되어 범인을 찾는 것처럼 말이에요!


오늘의 질문

오늘의 질문은 강원도 춘천시에 사는 초등학교 2학년 '에러가 무서워요'라는 닉네임을 쓰는 어린이가 보내왔어요. 함께 읽어볼까요?


To. 고코더 삼촌

안녕하세요, 고코더 삼촌! 저는 스크래치로 게임을 만들고 있어요. 그런데 자꾸만 제가 원하는 대로 안 돼요. 고양이가 움직여야 하는데 안 움직이거나, 이상한 곳으로 가버려요.
더 무서운 건, 파이썬을 배우는 형은 빨간 글씨로 된 에러 메시지를 자주 봐요. 형이 "또 에러났어!"라고 소리칠 때마다 저도 무섭더라고요.
에러가 나면 어떻게 해야 하나요? 에러를 고치는 방법을 알려주세요!
그것이 궁금해요! 도와줘요! 고코더!


고민 해결

안녕, '에러가 무서워요' 어린이 친구! 에러가 무섭다고 느끼는 건 너무나 당연한 일이에요. 삼촌도 처음에는 빨간 에러 메시지를 보면 가슴이 두근두근했답니다.


하지만 비밀을 하나 알려줄게요. 에러는 적이 아니라 친구예요! 에러는 "여기에 문제가 있어요!"라고 친절하게 알려주는 선생님 같은 존재랍니다. 에러가 없으면 우리는 뭐가 잘못됐는지 절대 알 수 없을 거예요.

지금부터 에러를 해결하는 마법 같은 방법, 바로 '디버깅'에 대해 배워볼까요?


디버깅이 뭐예요?

'디버깅(Debugging)'이라는 말은 '버그를 없앤다'는 뜻이에요. 버그(Bug)는 원래 '벌레'라는 뜻인데, 왜 프로그램의 오류를 버그라고 부를까요?


버그의 역사

재미있는 이야기가 있어요! 아주 옛날 1947년에, 세계 최초의 컴퓨터 중 하나를 만들던 과학자들이 컴퓨터가 갑자기 작동하지 않는 이유를 찾고 있었어요.


그런데 알고 보니 진짜 나방(벌레)이 컴퓨터 부품 사이에 끼어있었던 거예요! 그래서 그때부터 프로그램의 문제를 '버그'라고 부르기 시작했답니다.디버깅은 이런 버그들을 찾아서 고치는 것을 말해요. 마치 숨바꼭질에서 숨은 친구를 찾는 것처럼, 코드 속에 숨어있는 문제를 찾아내는 거예요!


탐정 놀이처럼 문제 찾기

디버깅은 탐정이 되는 것과 정말 비슷해요! 탐정이 사건을 해결하는 것처럼, 우리도 단계별로 에러를 해결할 수 있어요.


1단계: 문제가 뭔지 정확히 파악하기 (관찰하기)

탐정이 제일 먼저 하는 일이 뭘까요? 바로 현장을 꼼꼼히 관찰하는 거예요!

질문해보기:

무엇이 잘못됐나요?

언제부터 안 됐나요?

어떻게 하면 이 문제가 나타나나요?


삼촌의 예시: 아까 삼촌이 만난 에러를 다시 볼까요?

Error: Cannot read property 'name' of undefined

이 에러는 "undefined의 'name' 속성을 읽을 수 없어요"라는 뜻이에요. 음... 뭔가 있어야 하는데 없다는 얘기네요!


2단계: 단서 모으기 (에러 메시지 읽기)

탐정은 현장에서 증거를 찾아요. 프로그래머는 에러 메시지에서 단서를 찾는답니다!


에러 메시지는 세 가지를 알려줘요:

어디서 문제가 생겼는지 (몇 번째 줄인지)

무엇이 잘못됐는지

왜 작동하지 않는지


어린이 친구들을 위한 팁: 에러 메시지가 영어로 나와서 어렵다고요? 걱정하지 마세요!

구글 번역기에 복사해서 붙여넣으면 한국어로 볼 수 있어요

또는 "이 에러가 무슨 뜻이에요?"라고 ChatGPT한테 물어봐도 친절하게 설명해준답니다!


3단계: 가설 세우기 (추리하기)

탐정은 증거를 보고 "범인은 이 사람일 거야!"라고 추리하죠? 우리도 "문제는 이 부분일 거야!"라고 추리할 수 있어요.


삼촌의 추리: "음... user.name 을 읽을 수 없다고? 그럼 user가 제대로 만들어지지 않았을 가능성이 높아!"


4단계: 확인하기 (증거 찾기)

이제 우리의 추리가 맞는지 확인해야 해요!

확인하는 방법들:

방법 1: 출력해서 확인하기

print("user가 뭔지 확인해볼까요?")
print(user)

방법 2: 한 줄씩 실행해보기 코드를 한 줄씩 천천히 실행하면서 어디서 문제가 생기는지 관찰해요.

방법 3: 주석으로 막아보기 의심스러운 코드를 주석 처리해서 빼보고, 문제가 사라지는지 확인해요.



5단계: 고치기 (해결하기)

문제를 찾았다면 이제 고칠 차례예요!


삼촌의 해결:

# 문제가 있던 코드

user.name = "철수"


# 고친 코드

user = {} # user를 먼저 만들어주기!
user.name = "철수"


아하! `user`를 먼저 만들어주지 않아서 생긴 문제였어요!


### 6단계: 다시 테스트하기 (확인하기)

문제를 고쳤다고 끝이 아니에요. 정말로 잘 고쳐졌는지 다시 실행해봐야 해요!

프로그램 실행... 성공!


야호! 문제가 해결됐어요!



삼촌의 디버깅 비법 대공개!

삼촌이 10년 넘게 개발하면서 터득한 디버깅 비법들을 특별히 공개할게요!


비법 1: 고무 오리 디버깅

정말 신기한 방법이에요! 책상 위에 고무 오리 인형(또는 아무 인형)을 놓고, 그 오리에게 내 코드를 한 줄 한 줄 설명하는 거예요.


"여기서는 말이야, user를 만들고... 어? 잠깐, user를 만들지 않았네?"

이렇게 설명하다 보면 스스로 문제를 발견하게 돼요! 정말 마법 같지만, 진짜로 효과가 있답니다!


비법 2: 절반씩 나눠서 확인하기

코드가 100줄이나 된다면? 처음부터 끝까지 확인하면 너무 오래 걸려요. 방법을 알려줄게요!

코드의 한가운데(50번째 줄)까지는 잘 작동하나요? 잘 작동 → 문제는 51~100줄 사이에 있어요 작동 안 함 → 문제는 1~50줄 사이에 있어요

다시 절반(75번째 줄)까지는 잘 작동하나요? 이런 식으로 계속 반으로 나누면 금방 찾을 수 있어요!


비법 3: 최근에 바꾼 것부터 확인하기

프로그램이 어제까지 잘 작동했는데 오늘 갑자기 안 된다면? 높은 확률로 오늘 바꾼 부분에 문제가 있어요!

삼촌의 습관: 코드를 바꿀 때마다 주석으로 메모를 남겨요.

# 2025-01-05: 사용자 이름 기능 추가
user = {}
user.name = "철수"

이렇게 하면 나중에 문제가 생겼을 때 어디를 바꿨는지 쉽게 찾을 수 있어요!


비법 4: 휴식을 취하기

정말 중요한 비법이에요!

1시간 동안 에러를 찾으려고 노력했는데도 안 보인다면? 잠시 쉬어요. 화장실에 다녀오거나, 물을 마시거나, 잠깐 산책을 해요. 신기하게도 쉬고 돌아오면 바로 문제가 보이는 경우가 많아요! 삼촌도 샤워하다가 "아! 그거였구나!" 하고 깨달을 때가 많답니다.


비법 5: 도움 요청하기

혼자 해결할 수 없다면 도움을 청하세요!

도움을 청할 수 있는 곳:

선생님이나 부모님

친구들

온라인 커뮤니티 (어린이를 위한 코딩 커뮤니티)

ChatGPT 같은 AI


도움을 청할 때 꼭 포함할 것:

무엇을 만들려고 했는지

어떤 문제가 생겼는지

지금까지 어떤 시도를 해봤는지


이렇게 정리해서 물어보면 더 좋은 답변을 받을 수 있어요!


마법의 주문

ChatGPT Image 2026년 1월 5일 오후 12_35_00.png

마지막으로 삼촌이 에러를 만났을 때 중얼거리는 마법의 주문을 알려줄게요. 이 주문은 정말 효과가 있답니다!

"에러야, 반가워! 너는 내가 더 나은 프로그래머가 되도록 도와주는 선생님이야. 차근차근 너의 메시지를 읽고, 탐정처럼 단서를 찾아서, 꼭 해결하고 말 거야!"


여러분만의 주문 만들기

어린이 친구들도 자신만의 특별한 주문을 만들어보세요!


만드는 방법:

에러를 만났을 때 자신에게 해주고 싶은 응원의 말

잊지 말아야 할 디버깅 단계

해결했을 때 축하하는 말


예를 들면:

"에러야 안녕! 우리 함께 문제를 풀어보자!"

"천천히, 하나씩, 반드시 해결할 수 있어!"

"나는 매일 성장하는 꼬마 개발자야!"


여러분도 이 주문들을 외우면서 에러와 친구가 되어보세요! 포스트잇에 적어서 컴퓨터 옆에 붙여두는 것도 좋은 방법이에요.

keyword
이전 16화코딩할 때 자주 하는 실수들은 뭐예요?