AI & Tools

[바이브 코더 #5] 에러 메시지 읽는 법, 그리고 AI가 버그를 못 고치고 뱅뱅 돌 때 탈출법

빨간 에러 메시지가 화면을 덮으면 심장이 덜컥합니다. 영어는 빽빽하고, 처음 보는 단어투성이고, 뭘 잘못했는지 알려주지도 않는 것 같죠. 그래서 많은 바이브 코더가 에러 메시지를 읽지 않고 닫아버린 채 AI에게 "안 돼요, 고쳐줘"라고 말합니다. 그리고 AI는 엉뚱한 곳을 고치기…

이석우iOS Developer5분 읽기
[바이브 코더 #5] 에러 메시지 읽는 법, 그리고 AI가 버그를 못 고치고 뱅뱅 돌 때 탈출법 대표 이미지
ERROR MESSAGE IT IS A CONFESSION NOTE 텍스트와 함께 빨간 에러 창이 WHAT WHERE HOW 단서가 적힌 자백서로 변하고 탐정이 돋보기로 가리키는 히어로 이미지
에러 메시지는 범인이 남긴 자백서입니다. 읽는 요령만 알면 절반은 해결이죠

빨간 에러 메시지가 화면을 덮으면 심장이 덜컥합니다. 영어는 빽빽하고, 처음 보는 단어투성이고, 뭘 잘못했는지 알려주지도 않는 것 같죠. 그래서 많은 바이브 코더가 에러 메시지를 읽지 않고 닫아버린 채 AI에게 “안 돼요, 고쳐줘”라고 말합니다. 그리고 AI는 엉뚱한 곳을 고치기 시작합니다.

여기에 함정이 있습니다. 에러 메시지는 사실 범인이 남긴 자백서입니다. 무슨 일이, 어디서 났는지가 이미 적혀 있습니다. 읽는 요령만 알면 절반은 해결된 것이고, 그대로 AI에게 넘기면 나머지 절반도 빨라집니다. 이번 편에서는 에러 메시지를 읽는 법, AI에게 제대로 전달하는 법, 그리고 AI가 같은 버그를 못 고치고 뱅뱅 돌 때 탈출하는 법까지 다룹니다.

에러 메시지의 구조: 세 가지만 찾으면 됩니다

어떤 에러든 구조는 같습니다. 세 부분만 찾으면 됩니다.

  1. 무슨 일이 났나(에러 이름과 설명): 보통 첫 줄입니다. TypeError: Cannot read properties of undefined 같은 것이요. 직역하면 “비어 있는 것에서 뭔가를 꺼내려 했다”입니다. 택배가 안 왔는데 상자를 열려고 한 상황이죠.
  2. 어디서 났나(파일과 줄 번호): app/page.tsx:42 같은 표기가 있다면, app/page.tsx 파일의 42번째 줄이라는 뜻입니다. 범행 장소입니다.
  3. 어떤 경로로 났나(스택 트레이스): 그 아래 주르륵 나오는 목록은 사건에 이르기까지의 호출 경로입니다. 겁먹을 것 없이, 맨 위 몇 줄이 사건 현장에서 가장 가까운 기록이라는 것만 알면 됩니다.

전부 이해할 필요는 없습니다. “무슨 일 + 어디서”만 파악해도, 여러분은 이미 에러를 안 읽는 사람보다 열 배 유리한 위치에 있습니다.

에러는 두 군데에서 삽니다

1편의 구분이 그대로 돌아옵니다. 에러가 찍히는 곳은 두 군데이고, 증상에 따라 볼 곳이 다릅니다.

  • 브라우저 콘솔(프론트엔드의 비명): 화면이 하얗거나, 버튼이 반응하지 않거나, 화면 일부가 깨질 때. 브라우저에서 F12(또는 마우스 오른쪽 버튼 → 검사)를 눌러 Console 탭을 봅니다.
  • 서버 로그(백엔드의 비명): 저장·로그인·결제·AI 호출이 실패할 때. 개발 중에는 개발 프로그램이 돌아가는 터미널 창에, 배포 후에는 4편에서 본 배포 서비스 대시보드의 Logs 메뉴에 찍힙니다.

화면에는 “문제가 발생했습니다”라고만 뜨는데 서버 로그에는 진짜 원인이 적혀 있는 경우가 아주 많습니다. 화면만 보고 “에러 메시지가 없어요”라고 넘기지 말고 두 군데를 다 열어보는 습관이 필요합니다.

증상에 따라 브라우저 콘솔과 서버 로그 중 어디를 열지 정하고 에러 전문을 AI에게 전달하는 결정 트리 다이어그램
증상이 화면이면 콘솔, 저장·로그인이면 서버 로그입니다

AI에게 전달하는 법: 통째로, 상황과 함께

에러를 찾았으면 AI에게 이렇게 전달합니다.

  • 통째로 복사합니다. 뒷부분에 단서가 있는 경우가 많으니 첫 줄만 잘라 보내지 않습니다. 스크린샷보다는 텍스트 복사가 좋습니다.
  • 상황을 함께 적습니다. “회원가입 버튼을 눌렀더니”처럼 무엇을 하다가 났는지, 그리고 “원래는 환영 페이지로 넘어가야 해”처럼 기대한 동작이 무엇인지.
  • 어디서 찾았는지 적습니다. “브라우저 콘솔에서”인지 “서버 로그에서”인지. 이 한마디로 AI가 뒤질 영역이 절반으로 줄어듭니다.

나쁜 질문과 좋은 질문의 차이는 이 정도로 큽니다. “저장이 안 돼요, 고쳐줘”는 AI에게 지도 없이 수색을 시키는 것입니다. “저장 버튼을 누르면 화면은 그대로인데, 서버 로그에 이 에러가 떠. (에러 전문 붙여넣기) 원래는 목록에 새 글이 보여야 해”는 범행 장소와 자백서를 쥐여주는 것이고요.

AI가 뱅뱅 돌 때: 탈출법 4가지

같은 버그를 AI가 서너 번째 못 고치고 있다면, 그때부터는 시도 횟수를 늘리는 것보다 판을 바꾸는 것이 빠릅니다.

1. 새 대화를 엽니다. 실패한 시도가 쌓인 대화에서 AI는 자기가 만든 잘못된 가설에 계속 끌려갑니다. 새 대화를 열어 현재 증상과 에러만 깔끔하게 다시 전달하면 첫 시도에 풀리는 경우가 의외로 많습니다.

2. 롤백하고 작게 다시 시도합니다. 3편의 세이브 포인트가 여기서 빛납니다. 수정이 수정을 덮으면서 코드가 누더기가 됐다면, 마지막 커밋으로 돌아가서 아까 실패한 수정을 더 작은 단위로 하나씩 시킵니다.

3. 원인 조사부터 시킵니다. “고쳐줘” 대신 “고치지 말고, 이 에러의 원인 후보를 3개 찾아서 각각 어떻게 확인할지 알려줘”라고 시킵니다. AI는 고치라고 하면 성급하게 고치고, 조사하라고 하면 의외로 차분하게 조사합니다. 원인이 좁혀진 뒤에 고치게 하면 명중률이 크게 오릅니다.

4. 에러 원문을 검색합니다. 에러 메시지 첫 줄을 그대로 검색창에 넣어봅니다. 전 세계 누군가가 이미 겪고 해결해놓은 문제일 확률이 높습니다. 검색 결과 링크를 AI에게 주면서 “이 해결책이 내 상황에 맞는지 확인해줘”라고 시키는 조합도 강력합니다.

STOP RETRYING CHANGE THE GAME 문구와 함께 에러 트랙을 뱅뱅 도는 로봇과 NEW CHAT ROLLBACK INVESTIGATE FIRST SEARCH THE ERROR 네 개의 탈출문 일러스트
서너 번 실패했다면 다섯 번째 시도가 아니라 탈출문을 찾을 차례입니다

정리

  • 에러 메시지는 자백서입니다. “무슨 일(첫 줄) + 어디서(파일:줄 번호)“만 찾아도 절반은 해결입니다.
  • 에러는 브라우저 콘솔(화면 문제)과 서버 로그(저장·로그인·결제 문제) 두 군데에 삽니다. 둘 다 열어보세요.
  • AI에게는 에러 전문 + 무엇을 하다가 났는지 + 어디서 찾았는지, 세 가지를 세트로 전달합니다.
  • AI가 뱅뱅 돌면 시도 횟수를 늘리지 말고 판을 바꿉니다. 새 대화, 롤백 후 작게, 조사부터, 원문 검색.

다음 편에서는 미스터리처럼 보이는 고전 문제를 다룹니다. “어제까지 됐는데 오늘 안 돼요.” 코드를 안 건드렸는데 왜 갑자기 안 되는지, 범인 후보들을 순서대로 짚어봅니다.

이어서 읽기