단상: 코드를 고치기 전에 문제를 격리하라

작은 앱을 만들면서 Antigravity 와 Claude Code의
디버깅 방식을 통해 얻은 작은 교훈을 공유합니다.

[앱이름] 미니 전광판

[앱 동작원리]

  • ESP8266에 웹서버 실행
  • 로컬 장비로 웹서버에 접속해 텍스트 입력
  • ESP8266의 액정에 텍스트 표시

[문제점]

  • 서버는 정상 실행되었는데
  • 192.168.0.111 접속 불가

[문제 해결 과정]

1) Antigravity
“코드가 문제일 것이다” → 코드만 계속 수정

  1. Flash Erase 및 Clean Build
  2. ESP8266WebServer → WiFiServer 엔진 교체
  3. 포트 변경 (80 → 8080)
  4. I2C 속도 개선, 루프 최적화
  5. AP 모드 검증
    결과: 코드에는 아무 문제가 없었음. 5번 시도 모두 실패

2) Claude Code
“문제 지점을 먼저 좁히자” → 단계적 격리(isolation)

  1. curl http://192.168.0.111/ 실행 → 200 OK → 서버 정상 확인
  2. 서버 문제 아님 → 브라우저 문제로 범위 축소
  3. Safari 테스트 → 됨 → Chrome 문제로 범위 축소
  4. Chrome 시크릿 모드 → 됨 → Chrome 설정 문제로 범위 축소
  5. 보안 DNS 끄기 → 해결
    결과: 코드 수정 없이 해결. curl 한 번으로 방향이 갈렸음.

[원인]
Chrome의 보안 DNS (Secure DNS / DNS over HTTPS)
로컬 네트워크 IP(192.168.0.111)에 대한 접속을 차단
외부 DNS 서버를 통해 해석 시도
로컬 IP를 찾지 못함 ERR_ADDRESS_UNREACHABLE 발생

[해결 방법]
1) 구글 크롬 [보안 DNS 사용] 옵션 끄기
2) 사파리 브라우저 이용

[참고: 로컬 IP 접속 방법 차이]
1) Chrome:
자체 DNS 해석기를 사용 → 보안 DNS가 켜져 있으면
외부 DNS 서버(예: Google, Cloudflare)에 192.168.0.111을 질의
→ 로컬 IP라 해석 불가 → ERR_ADDRESS_UNREACHABLE

2) Safari: macOS 시스템 DNS를 그대로 사용
→ 공유기의 로컬 DNS가 처리 → 정상 접속

3) curl: 마찬가지로 시스템 DNS 사용 → 정상 접속

Bookmark the permalink.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다