빨강은 혼내는 색이 아니라 "여기 좀 봐"라고 짚어주는 형광펜이다. 에러는 컴퓨터가 멈추기 직전에 원인을 친절히 적어둔 쪽지다.
이 글 3줄 요약
- 에러 메시지에는 "어디서·뭐가·왜"가 이미 다 적혀 있다. 찾는 자리만 알면 빨간 글자는 더 이상 무섭지 않다.
- 에러를 AI에게 던질 땐 세 가지를 꼭 같이 준다 — 에러 전체 메시지, 직전에 한 행동, 원래 기대한 결과. "안 돼요"가 아니라 "뭘 봤나·뭘 했나·뭘 원했나".
- 에러처럼 보이는 것과 진짜 에러는 다르다. 글자가 깨져 보여도 결과물이 제대로 나왔으면 표시 문제일 뿐이다. 먼저 결과부터 확인하라.
이 글은 AI 바이브코딩 강의 12부작 시리즈의 8편이다. 바이브코딩이란 코드를 한 줄씩 직접 타이핑하는 대신, AI에게 말로 시켜서 프로그램을 만드는 방식을 말한다. 시리즈를 처음 보는 분은 1편부터 보면 흐름이 잡힌다. 이번 편의 주제는 코딩을 하다 반드시 마주치는 그 빨간 글자, 바로 에러를 읽는 법이다.
오늘의 질문 — 빨간 글자에 왜 심장이 쿵 내려앉나
화면에 빨간 글자가 좌르륵 뜨면 순간 심장이 쿵 내려앉는다. "내가 뭘 크게 잘못했구나" 싶고, 다 지우고 처음부터 다시 하고 싶어진다. 하지만 그 빨간 글자는 당신을 혼내는 게 아니다. 오히려 고장 난 곳을 콕 집어 알려주는 신고서에 가깝다.
오늘 배울 건 딱 두 가지다. 하나는 에러를 읽는 법, 즉 그 글자가 무슨 말인지 알아듣는 것이다. 다른 하나는 그걸 AI에게 제대로 던지는 법, 즉 AI에게 대신 고치게 시키는 것이다. 이 두 개만 손에 익으면 웬만한 막힘은 5분 안에 뚫린다.
에러는 "혼내는 말"이 아니라 "고장 신고서"다
세탁기가 멈추면 화면에 E4 같은 코드를 띄운다. 그 코드는 수리기사에게 "어디가, 왜 고장 났는지"를 알려주는 신고서다. 코드가 없으면 기사도 뜯어보기 전엔 원인을 모른다. 에러 메시지도 똑같다. 컴퓨터가 멈추기 직전에 상황을 자세히 적어둔 쪽지다.
거의 모든 에러에는 세 가지 정보가 들어 있다.
| 무엇을 알려주나 | 뜻 | 예시 |
|---|---|---|
| 어디서 | 몇 번째 파일, 몇 번째 줄에서 멈췄나 | order.py 12번째 줄 |
| 뭐가 | 어떤 종류의 문제가 생겼나 | 파일을 못 찾음 |
| 왜 | 한 줄로 설명한 구체적인 원인 | 그런 파일이 없어서 |
이 세 가지(어디서·뭐가·왜)를 찾는 자리만 알면 된다. 그럼 실제 에러 메시지 하나를 색깔로 짚어보며 뜯어보자.
진짜 에러 메시지 하나를 뜯어본다
아래는 실제로 자주 만나는 에러 메시지다. 겁먹지 말고 천천히 보자.
Traceback (most recent call last):
File "order.py", line 12, in module
with open('menu.txt') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'menu.txt'
이걸 한 줄로 번역하면 이렇다. "order.py 파일 12번째 줄에서 menu.txt 라는 파일을 열려고 했는데, 그런 파일이 없다." 파일 이름을 잘못 썼거나, 파일이 다른 폴더에 있다는 뜻이다.
각 조각이 어디에 있는지 짚어보면 이렇게 나뉜다.
| 자리 | 어디에 있나 | 읽는 법 |
|---|---|---|
| 어디서 | File "order.py", line 12 | 파일명과 줄번호. 여기부터 보면 된다 |
| 뭐가 (에러 종류) | FileNotFoundError | 이름에 답이 있다. "File Not Found = 파일 못 찾음" |
| 왜 | No such file or directory | 그런 파일이나 폴더가 없어서 |
| 무엇을 | 'menu.txt' | 문제가 된 대상. 따옴표 안이 범인 |
Traceback이라는 단어(에러가 어디서부터 어디로 번졌는지 거슬러 추적한 기록)로 시작하는 게 보일 것이다. 이 첫 줄부터 마지막 줄까지가 하나의 신고서다. 특히 파일명과 줄번호가 있는 윗부분, 그리고 에러 종류 이름과 원인이 있는 마지막 줄, 이 둘만 봐도 대부분 감이 온다.
로그 = 프로그램이 남기는 CCTV 기록
에러의 사촌으로 로그(log)라는 게 있다. 로그란 프로그램이 일하면서 시간순으로 남기는 업무일지다. 에러가 "사고 순간의 비명"이라면, 로그는 "사고 전후를 담은 CCTV 녹화"다. 에러 한 줄로 원인이 부족할 때, 로그를 되감아 보면 무슨 일이 있었는지 보인다.
수백 줄이 떠도 겁먹을 필요 없다. 세 가지만 기억하면 된다.
- 맨 아래부터, 시간 역순으로 본다. 로그는 위에서 아래로 쌓인다. 사고 원인은 보통 맨 마지막 줄 근처에 있으니 제일 밑을 먼저 보라.
ERROR,Traceback,Exception같은 단어를 찾는다. 수백 줄이라도 이 세 단어 주변만 봐도 90퍼센트는 해결된다.- 정상 로그와 에러 로그를 구분한다. 글자가 많다고 다 문제는 아니다.
INFO는 정상 안내,WARNING은 주의,ERROR만 진짜 사고다.
실전 사례 — "고장 난 줄 알았는데, 글자만 깨진 거였다"
직접 겪은 일이다. 프로그램을 돌렸더니 까만 화면에 알 수 없는 글자가 좌르륵 떴다. 이런 모양이었다.
¸Þ´º Á¤¸®
ÁÖ¹® 12°Ç ¿Ï·á
순간 "코드가 고장 났구나" 싶어 다 지우려 했다. 그런데 결과 파일을 열어보니 내용은 멀쩡했다. 저장된 엑셀 파일에는 이렇게 제대로 들어 있었다.
메뉴 정리
주문 12건 완료
저장됨: result.xlsx
문제는 프로그램이 아니라 글자를 화면에 표시하는 약속, 즉 인코딩이 안 맞았던 것이다. 인코딩이란 글자를 컴퓨터가 저장하고 표시하는 약속을 말한다. 한글을 엉뚱한 표로 읽어서 깨져 보였을 뿐, 실제 작업은 아무 문제 없이 끝까지 돌았다.
여기서 배울 교훈은 하나다. "에러처럼 보이는 것"과 "진짜 에러"는 다르다. 빨간 글자나 깨진 글자가 떠도, 먼저 결과물이 제대로 나왔는지부터 확인하라. 진짜 에러는 실행이 멈추고, 표시 문제는 실행이 끝까지 돈다.
가장 중요한 기술 — 에러를 AI에게 던지는 3종 세트
에러를 읽을 줄 알게 됐다면, 이제 그걸 AI에게 넘겨 대신 고치게 시키면 된다. 이게 바이브코딩의 핵심이다. 다만 던지는 방법이 중요하다. 이 세 가지를 꼭 같이 줘야 한다.
- 에러 전체 메시지 — 자르지 말고 통째로. 중간을 자르면 AI도 추측만 한다.
Traceback부터 마지막 줄까지 전부 복사해서 붙여넣어라. 특히 파일명과 줄번호가 있는 윗부분을 빼먹지 말 것. - 직전에 뭘 했는지 — "메뉴 파일 이름을 바꾸고 다시 실행했더니 이 에러가 났다"처럼 바로 전 행동을 적으면, AI가 원인 범위를 확 좁힌다.
- 원래 기대한 결과 — "엑셀 파일이 하나 만들어지길 기대했다"처럼 정상이면 어떻게 됐어야 하는지를 알려주면, AI가 맞게 고쳤는지 스스로 확인할 수 있다.
외우기 쉽게 정리하면 이렇다. "뭘 봤나(에러) · 뭘 했나(행동) · 뭘 원했나(기대)." 이 세 개면 AI가 명탐정이 된다.
같은 에러, 질문이 다르면 해결 속도가 다르다
같은 에러라도 어떻게 묻느냐에 따라 해결 속도가 크게 갈린다. 나쁜 질문은 이렇다.
안 돼요. 고쳐주세요.
무엇이, 어디서, 왜 안 되는지가 하나도 없다. AI는 수십 가지 원인을 하나씩 되물어야 하고, 그동안 시간만 흐른다. 반면 3종 세트가 들어간 좋은 질문은 이렇다.
① 에러: FileNotFoundError: ... 'menu.txt' (전체 붙여넣음)
② 행동: 파일 이름을 menu.txt로 바꾸고 실행했어
③ 기대: 원래는 엑셀 파일이 하나 나와야 해
이 세 줄이면 AI가 원인을 바로 짚고 고친 코드까지 내놓는다. 질문의 질이 곧 해결 속도다. 그리고 다시 강조하지만, 에러 메시지가 영어라고 지레 지우지 마라. 그대로 AI에게 주면 통역까지 해서 무슨 뜻인지 알려준다.
버려야 할 흔한 오해 두 가지
첫 번째 오해는 "빨간 글자가 떴다 = 내가 뭘 크게 잘못했다는 꾸중"이라는 생각이다. 빨강은 혼내는 색이 아니라 "여기 좀 봐"라는 형광펜이다. 에러는 컴퓨터가 원인을 친절히 적어준 안내문일 뿐이다. 아무것도 안 적어주고 그냥 멈추는 게 훨씬 무섭다. 에러는 오히려 고마운 것이다.
두 번째 오해는 "에러가 났다 = 프로그램이 망했다, 처음부터 다시"라는 생각이다. 에러 한 번에 다 지우면 그동안 만든 것까지 날린다. 대부분은 한 줄만 고치면 된다. 에러는 완성으로 가는 정상 과정이다. 만드는 사람은 하루에도 수십 번 에러를 만나고, 수십 번 고친다. 그게 일상이다.
딱 세 줄만 가져가세요
- 에러 = 고장 신고서. 어디서·뭐가·왜가 다 적혀 있다. 파일명과 줄번호(어디서), 에러 종류 이름(뭐가), 뒤따르는 한 줄(왜) — 이 세 자리만 보면 된다.
- AI에게 던질 땐 3종 세트 — 에러 전체, 직전 행동, 기대 결과. "안 돼요"가 아니라 "뭘 봤나·뭘 했나·뭘 원했나". 에러 메시지는 자르지 말고 통째로.
- 에러처럼 보이는 것과 진짜 에러를 구분하라. 깨진 글자나 경고가 떠도 결과물이 제대로 나왔으면 표시 문제일 뿐이다. 먼저 결과부터 확인.
오늘 이후, 빨간 글자가 뜨면 지우기 전에 먼저 읽어보자. "어디서·뭐가·왜"를 찾는 습관 하나면, 막힘 앞에서 당황하지 않게 된다.
다음 편 — 바이브코딩 강의 9편에서는 자동화를 다룬다. 크론(예약 실행)과 봇, 웹훅으로 "내가 안 켜도 알아서 도는 프로그램"을 만드는 이야기다. 자동화는 내가 안 보는 새벽에 돈다. 그때 남는 건 로그뿐이다. 에러와 로그를 읽을 줄 알아야 무인 시스템을 믿고 맡길 수 있다. 에러 읽기를 먼저 배운 이유가 바로 여기에 있다.