일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 노개북
- KTS
- kotlin
- Android
- gradle
- 안드로이드
- 자바
- 하버드
- ActiveMovieControl
- C++
- 개발
- mime
- java
- build.gradle
- linux
- c
- 코틀린
- 구글
- 보안
- Eclipse
- 악성코드
- 안철수
- ActiveX
- 탐지기법
- Android 4.1
- 안드로이드 개발
- 리눅스
- OOM
- git
- Today
- Total
꿈소년의 개발 이야기
SW 문제해결 접근방식 본문
프로세스 : 문제식별 -> 데이터 수집 -> 데이터 분석 -> 가설설정 -> 원인분석 -> 개선방안 -> 해결조치
문제해결 접근방식
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 준수
'Android Development' 카테고리의 다른 글
JAVA regexes (0) | 2012.02.09 |
---|---|
Android Fragment (0) | 2011.12.05 |
LAN Search PRO (0) | 2011.11.30 |
Product 설정 파일을 통해 환경 변수 설정을 통한 선택 빌드하기 (0) | 2011.11.22 |
so 파일을 asm으로 변경하여 address 를 찾아 function 을 확인하기. (0) | 2011.10.20 |