로그를 읽는 것이 코드를 읽는 것보다 먼저다

자동매매AI협업디버깅인사이트

나는 코드를 읽지 못한다.

그런데 오늘 자동매매 시스템의 버그 세 개를 하루 안에 찾아서 고쳤다.

어떻게 가능했는지 정리해두고 싶었다.


보이는 돈과 쓸 수 있는 돈은 다르다

오류 메시지는 “주문가능금액을 초과했습니다”였다. 통장에 돈이 있었다. 이해가 안 됐다.

AI에게 그대로 전달했다. AI가 확인하니 시스템이 보던 잔고가 실제로 쓸 수 있는 돈이 아니었다. 주식은 D+2 결제라 어제 산 금액은 장부에는 잡히지만 오늘 주문에는 못 쓴다. 그 차이를 시스템이 구분하지 못하고 있었다.

원인을 이해하자 해결책은 단순했다. KIS가 직접 알려주는 주문가능금액을 쓰면 됐다.

코드를 몰라도 “돈이 있는데 왜 못 사냐”는 질문은 할 수 있다. 그 질문이 버그를 찾는 시작이었다.


버그는 항상 실제 실행 경로에 있다

로그에서 KT 매도 예약이 18건 쌓인 걸 봤다. 왜 이렇게 됐냐고 AI에게 물었다.

5분마다 돌아가는 모니터링이 신호를 볼 때마다 예약을 새로 만들고 있었다. 중복 확인이 없었다.

그리고 버그 1과 2의 수정이 맞는 위치에 들어가지 않았다는 것도 뒤늦게 알았다. AI가 코드 구조를 다시 확인하더니 장중에 실제로 실행되는 파일이 따로 있다고 했다. 수정이 적용된 파일은 실제로 돌아가지 않는 파일이었다.

버그는 내가 보는 파일이 아니라 실제로 실행되는 경로에 있다. 그걸 확인하는 것이 디버깅의 절반이다.


로그를 읽는 것이 코드를 읽는 것보다 먼저다

오늘 내가 한 일을 정리하면:

  1. 로그에서 이상한 것을 발견했다
  2. 상황을 그대로 AI에게 설명했다
  3. AI가 찾아낸 원인을 이해했다
  4. 고칠지 말지 판단했다

코드를 해석한 건 AI였다. 판단을 내린 건 나였다.

코드를 읽지 못해도 로그는 읽을 수 있다. 로그에 뭔가 이상해 보이는 숫자가 있다면, 그게 이미 충분한 단서다. 그 단서를 AI에게 가져가면 된다.

코드를 먼저 읽으려 하면 막힌다. 로그를 먼저 읽고, 이상한 점을 찾고, 그것을 언어로 설명하는 것. 그 순서가 맞다.


내일 확인: KT 매도가 1건만 나가는지 09:05에 본다.