'문제해결'에 해당되는 글 1건

  1. 2010.05.03 [안드로이드] 문제해결 방법론 메모
프로세스 : 문제식별 -> 데이터 수집 -> 데이터 분석 -> 가설설정 -> 원인분석 -> 개선방안 -> 해결조치


문제해결 접근방식
  • Divide&Conquer 분석 : 문제를 작은 구간으로 나누어서 분석
  • Event 분석 : log,dump,trace 등 각종 기록 분석
  • Queue 분석 : 자원(cpu/network/memory/connection 등)의 대기행렬 분석. 병목파악

Event 분석
  • log : 시점별 이벤트. history
  • dump : 특정 시점의 리소스 상태. snapshot
  • trace : 리소스 활동상태 추적. profiling

안드로이드에서 주로 발생하는 문제
  • 애플리케이션 응답없음(ANR)
  • 시스템 응답없음(먹통, lock up)
  • 프로그램 오류
  • 낮은 성능
  • Crash
     => 경험에 의한 자료 부족

주요 원인
  • bug : 애플리케이션 오류
  • resource leak : 메모리 누수, 자원미반납 등
  • bottleneck : 디스크 IO 병목? 네트워크 병목?
  • dead lock : 쓰레드 경합
  • bad query : Provider의 악성 SQL
  • unoptimized : 튜닝 안된 파라미터 설정
     => 경험에 의한 자료 부족

분석 방법
  • 힙덤프 분석
  • 쓰레드 분석
  • 가용자원 분석
  • 프로파일링
  • IO 병목 분석
  • 네트워크 분석
  • 소스 디버깅
  • 로그 분석
  • 파일/데이터(DB) 분석

주요 도구
  • ADB
  • logcat
  • TraceView
  • DDMS
  • Eclipse ADT
  • Eclipse MAT
  • 쉘 명령어 : ps, top, ...

데이터 수집

1. 시스템 정보수집 : 분석의 기본
- SW, HW, 네트워크 정보수집
- cpu,memory,network,disk 등 장치 및 kernel 정보
- 리소스 사용량

2. 특정시점의 자원/상태 정보 : 정적 데이터, snapshot, dump
- 힙메모리 덤프 : kill -10 <pid>
- 쓰레드 덤프 : kill -3 <pid>, /data/anr/traces.txt
- App 상태 정보 : dumpsys
- Device 상태 정보 : dumpstate
- 무선연결 정보 : DDMS > Dump radio state

3. 시스템의 활동상태/이벤트 정보 : 동적 데이터, tracing, monitoring
 - 이벤트 로그(히스토리 분석) : logcat
 - 실행 기록(동적활동 추적) : DDMS > Start Method Profiling
 - 리소스 모니터링 : vmstat, top, ...


문제의 사전예방
  • FindBugs : 잠재된 소스오류 검출
  • JUnit : 단위 테스트
  • Monkey : 스트레스 테스트, 랜덤 이벤트 발생
  • Best Practice 준수
Posted by 에코지오
,