디버깅을 통해 살인 사건 해결하기: Python, Flask, HTML 활용 사례
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
초보 개발자 및 Flask 프레임워크 사용자 (난이도: 중급 이하)
핵심 요약
- Jinja 템플릿 오류로 인해
/tasks
라우트가 작동하지 않았음 - VS Code 자동 저장과 불완전한 Git 커밋으로 인한 코드 오염
- Debug Toolkit (예:
@watch_route
,clue_overlay
미들웨어)을 통해 문제 원인 추적
섹션별 세부 요약
1. 사건의 시작: 블랭크 화면
- Flask 기반
DailyDeeds
앱의/tasks
라우트가 예기치 않게 작동 중단 - 로그에 오류 없음,
templates/todo.html
파일이 누락됨 git log
에서 의심스러운 커밋 (79c1f0a
) 발견
2. 조사 과정: 코드 분석
routes.py
의show_tasks()
함수는 정상적으로 보임todo.html
파일이 불완전하게 삭제된 것으로 확인- Jinja 블록 오류(
{% for task in tasks %}
라인 18) 발생
3. 해결 도구 개발
@watch_route()
데코레이터: 라우트 사용 기록 및 타이밍 로깅clue_overlay()
미들웨어: 오류 라우트에 디버그 UI 주입template_forensics.py
: 렌더링 전 템플릿 검증- Visual diffing 자동 스냅샷 기능 추가
4. 교육적 활용: 살인 미스터리 게임
- GitHub 저장소에 포함된 가상 살인 사건 조사 웹 앱
- 각 브레이크된 라우트는 "의심자", 템플릿은 "증거"로 구성
- 디버깅을 탐정 활동으로 재해석하여 학습 동기 부여
결론
- 실무에서는 자동화된 디버깅 도구 (
@watch_route
,clue_overlay
)를 도입해 오류 추적 효율화 - Git 커밋 관리와 코드 검증을 통해 의도치 않은 오염 방지
- 교육에서는 게임화된 디버깅 (예: 살인 미스터리 앱)으로 학습 효과 극대화