본문 바로가기
강의

바이브코딩 강의 8편 — 빨간 에러 글자는 나를 돕는 신고서다

화면에 빨간 글자가 좌르륵 뜨면 왜 심장이 쿵 내려앉을까. 에러 메시지에는 어디서·뭐가·왜가 이미 다 적혀 있다. 에러와 로그를 읽는 법, 그리고 그걸 AI에게 던져 대신 고치게 시키는 법을 개발 지식 0에서 설명한다.

빨강은 혼내는 색이 아니라 "여기 좀 봐"라고 짚어주는 형광펜이다. 에러는 컴퓨터가 멈추기 직전에 원인을 친절히 적어둔 쪽지다.

이 글 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편에서는 자동화를 다룬다. 크론(예약 실행)과 봇, 웹훅으로 "내가 안 켜도 알아서 도는 프로그램"을 만드는 이야기다. 자동화는 내가 안 보는 새벽에 돈다. 그때 남는 건 로그뿐이다. 에러와 로그를 읽을 줄 알아야 무인 시스템을 믿고 맡길 수 있다. 에러 읽기를 먼저 배운 이유가 바로 여기에 있다.

자주 묻는 질문

에러 메시지가 전부 영어인데, 영어를 못하면 코딩을 못 하는 건가요?

그렇지 않습니다. 영어를 몰라도 됩니다. 에러 메시지를 지우지 말고 그대로 복사해서 AI에게 붙여넣으면, AI가 한국어로 무슨 뜻인지 번역까지 해서 알려줍니다. 오히려 어설프게 영어라서 겁먹고 지워버리는 게 가장 손해입니다. 에러 종류 이름 자체가 힌트인 경우도 많은데, 예를 들어 FileNotFoundError는 단어 그대로 '파일을 못 찾음'이라는 뜻입니다. 읽는 습관만 붙이면 영어 실력과 무관하게 대부분 풀립니다.

에러가 나면 지금까지 만든 게 다 망가진 건가요? 처음부터 다시 해야 하나요?

대부분 그렇지 않습니다. 에러 한 번에 프로그램 전체가 망가지는 일은 드물고, 보통은 한 줄만 고치면 됩니다. 에러가 났다고 겁먹고 다 지워버리면 그동안 만든 멀쩡한 부분까지 함께 날리게 됩니다. 프로그램을 만드는 사람들은 하루에도 수십 번 에러를 만나고 수십 번 고칩니다. 에러는 실패가 아니라 완성으로 가는 정상적인 과정이라고 생각하시면 마음이 훨씬 편해집니다.

에러를 AI에게 물어보는데도 잘 못 고칠 때가 있어요. 왜 그런가요?

질문에 정보가 부족한 경우가 대부분입니다. '안 돼요, 고쳐주세요'처럼 물으면 AI는 원인을 하나씩 되물으며 추측할 수밖에 없습니다. 세 가지를 꼭 같이 주세요. 첫째 에러 메시지 전체를 자르지 말고 통째로, 둘째 그 직전에 무엇을 했는지, 셋째 원래 기대했던 정상 결과가 무엇인지입니다. 이 세 가지가 들어가면 AI가 원인을 바로 짚고 고친 코드까지 내놓는 경우가 많습니다. 질문의 질이 곧 해결 속도입니다.

빨간 글자나 깨진 글자가 떴는데, 이게 진짜 에러인지 아닌지 어떻게 구분하나요?

가장 먼저 결과물이 제대로 나왔는지부터 확인하시면 됩니다. 진짜 에러는 실행이 도중에 멈추고 원하던 결과 파일이 안 만들어집니다. 반면 글자만 깨져 보이는 표시 문제는 화면이 이상해 보여도 실행은 끝까지 돌아가고 결과물은 멀쩡하게 나옵니다. 예를 들어 한글 Windows에서 글자가 깨져 보이는 건 대부분 실제 고장이 아니라 글자를 표시하는 약속이 안 맞았을 뿐입니다. 화면 모양에 놀라기 전에 결과부터 열어보세요.

로그라는 게 에러랑 다른 건가요? 수백 줄이 떠서 어디를 봐야 할지 모르겠어요.

로그는 프로그램이 일하면서 시간순으로 남기는 업무일지입니다. 에러가 사고 순간의 비명이라면 로그는 사고 전후를 담은 CCTV 녹화라고 보시면 됩니다. 수백 줄이라도 겁먹을 필요 없습니다. 세 가지만 기억하세요. 첫째 맨 아래부터 거꾸로 보세요. 사고 원인은 보통 마지막 줄 근처에 있습니다. 둘째 ERROR, Traceback, Exception 같은 단어 주변만 봐도 대부분 해결됩니다. 셋째 INFO는 정상 안내, WARNING은 주의, ERROR만 진짜 사고입니다. 글자가 많다고 다 문제인 건 아닙니다.

관련 글