2017년 7월 10일 월요일

안드로이드 디버깅의 기초


문제의 상황과 로그만 전달 받음

보통 개발자는 문제의 상황과 로그를 덜컥 전달 받게 됩니다. 그럴때는 개발자는 짜증이 납니다.
"도대체 어디가 문제란 말이야 정확하게 문제 발생 시점과 동영상을 주던가... 어디가 문제라는거지??"
궁시렁 거리면서 로그를 살펴보게 되죠. 유능한 개발자라면 상황을 판단하면서 소스가 머리속을 overlap 하면서 로그를 살펴보며 문제에 접근하게 됩니다. 제가 생각 해볼때 아무리 유능한 개발자라도 변화 무쌍한 우리의 SW생태계 구조에서는 인간의 기억력은 무용지물이 되고 맙니다. 첫번째로 로그에서 찾아봐야 할것은 android에서 event log 입니다.
bug report ( dumpstate ) 에서 event log 로 검색 하면 나오는 부분입니다.
Activity의 전환이나 notification의 변화등 중요한 이벤트들의 로그가 남게됩니다. 이러한 이벤트 로그로부터 문제점들의 상황을 유추해나가며 문제 상황의 정확한 시점을 찾을 수 있게 됩니다.

시간

시점을 추측 했으면 그다음에는 android main 이나 system 로그를 보는것입니다. kernel단은 sleep시 시간이 지나가지 않습니다. 따라서 커널 시간이 일반 시간과 일치하지 않기 때문에 sleep in/out시 UTC time이 기록되는 경우가 있습니다. 그걸 기준으로 system 시간과의 차이를 이용해서 시간을 유추하면 됩니다.
해당 시간대의 로그를 살펴보면서 문제 app의 Pid 를 검색해보면 중요한 단서가 될만한 내용이 있을 수 있습니다.

정리

event log 를 살펴보고 문제 시점 발생앱, 시간 유추
다른 로그로 부터 문제의 시간동안 특별한 로그가 있는지 검색
특히 문제가 발생했던 PID가 출력하는 로그가 있는지 점검




댓글 없음:

댓글 쓰기