15. Debugging

개요

Project를 진행하면서, 전에 잘 작동하던 기능이 어느 순간 제대로 작동하지 않는 문제를 발견했다

특히 이제 없는 팀원이 만들었었던 기능을 해결해야만 했고, 이를 해결하는 과정을 녹여보았다

문제

문제는 간단하다

알림 목록을 보여주는 화면에서, 알림이 보이지 않는다. 하지만 API는 성공적으로 호출하는 것을 OkHttp 로그로 확인할 수 있었다

OkHttpLog OkHttp 로그

파악

기본적으로 큰 구조는 Remote Mediator를 이용한 오프라인에서도 동작하는 Paging3 기반 리스트였다

보통 그렇게 제대로 기능하지 않는다면, 에러 로그가 뜨거나, Crash가 일어나거나, 어떤 형식으로든 티가 나게 될 텐데 그런 증상은 딱히 나타나지 않았다

아마 어디선가 try-catch 등으로 에러를 처리하고 있는 것이라 짐작했다

접근

  • App Inspector

    명확하게 어디라고 단정지을 수는 없었지만, API 가 잘 호출된 것이 확인됐음에도 기능이 제대로 동작하지 않았다면, 역시 Paging3 관련 로직 및 파일에 있을 것이라고 생각하였다

    이를 검증해보고자 App InspectorDB 를 보았을 때,

    AppInspector 아래의 데이터에 아무 데이터도 없는 것을 볼 수 있다

    위 사진처럼 DB 내에 아무런 데이터가 들어오지 않는 것을 확인할 수 있었다

  • BreakPoint

    DB에 아무것도 들어오지 않는 것을 확인했기에 파악할 건 `Data Layer`으로 좁혀졌다

    특히 API가 응답이 올바르게 왔음에도 DB에 저장되지 않았다는 점에서 RemoteMediator가 역시 가장 의심스러웠다

    BreakPoint 중단점 설정 후 Debugging 한 결과

    역시 의심되는 API를 호출하는 부분에 BreakPoint를 걸고 실행해본 결과, 예상대로 에러가 탐지되는 것을 확인했다

    NPE가 발생하는 것을 확인할 수 있었고 해당 부분은 아래와 같이 Enum으로 되어 있는 부분이었다 BreakPoint Enum Class 부분

  • Swagger

    Enum Class라는 것을 보자 직감적으로 Enum에 선언되지 않은 데이터가 들어온 것이 아닐지 의심되어 Swagger를 확인해보았고 아래와 같은 값임을 확인할 수 있었다

    Swagger Swagger API에서 해당 데이터 타입

    비교 결과 역시 없는 값이 있는 것을 확인할 수 있었다

    아마 BackEnd에서 추가했지만 소통 문제로 제대로 인지하지 못한 것으로 파악된다

수정 결과

성공적으로 알림 목록이 불러와지는 것을 확인할 수 있다


© 2025. Na2te All rights reserved.