AI에게 올바른 맥락 먹이기
여기에 당신의 지렛대 대부분이 있다. 버그를 보고할 때 다음을 포함하라:
- 에러 메시지를 그대로. 정확히 복사하라 — 의역하지 마라. 에러를 의역하는 것은 전화로 사진을 설명하는 것과 같다. 정작 중요했던 하나의 디테일을 빠뜨리게 된다.
- 스택 트레이스, 특히 위쪽 몇 줄.
- 관련 코드 — 에러를 던진 함수, 그리고 그것이 호출하는 모든 것.
- 무엇을 기대했고 무엇이 일어났는지.
강력한 디버깅 프롬프트는 실제로 이렇게 생겼다:
회원가입 폼을 제출할 때 에러가 나. 전체 출력은 다음과 같아:
TypeError: Cannot read properties of undefined (reading 'email')
at validateUser (src/auth/validate.js:14:23)
at handleSignup (src/routes/signup.js:31:10)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
재현 단계: 폼을 채우고 "Sign up"을 클릭한다.
기대: "Welcome" 메시지.
실제: 페이지가 빈 화면이 되고 위 에러가 콘솔에 나타난다.
여기 validate.js야 (14번 줄 근처):
[함수 붙여넣기]
그리고 이걸 호출하는 handleSignup 함수야:
[함수 붙여넣기]
무엇이 이걸 일으킬 수 있고, 무언가를 바꾸기 전에 어떻게 확인할 수 있을까?
마지막 줄에 주목하라. 당신은 즉각적인 수정이 아니라 가설과 확인 단계를 요청하고 있다. 그것이 AI를 정직하게 유지한다.
당신이 붙여넣는 트레이스를 읽는 법을 아는 것도 도움이 된다. 스택 트레이스는 최신순으로 정렬된 호출 이력이다. 맨 위 줄은 프로그램이 실제로 터진 곳이고, 그 아래 각 줄은 그 위의 함수를 호출한 함수다. 그래서 예시에서 validateUser는 email이 undefined인 무언가에서 읽힌 곳이고, handleSignup은 validateUser를 호출한 쪽이다. 당신 코드 아래의 프레임 — processTicksAndRejections 같은 — 은 언어 런타임의 것이다. 보통 무시해도 된다. 당신의 파일을 가리키는 첫 줄을 만날 때까지 위에서 아래로 읽어라. 그곳이 거의 항상 살펴보기 시작할 자리다.