[컴][안드로이드] app 이 죽을 때 덤프

어플 죽을때 덤프 / 안드로이드에서 어플 죽을 때 로그 / 덤프 얻는 법 / 강제종료시 / force colose

thread dump

보통의 JVM 이나 Dalvik VM 에서는 자동으로 thread dump(javacore) 를 남겨준다고 한다. android 에서는 이것이 /data/anr/traces.txt 에 남겨진다. [ref. 1]

참고로, 매번 새로 생성되지 않고 기존 파일에 쓰레드 덤프가 누적되어 기록된다.[ref. 1]

그러나 언제 기록되는지에 대한 것은 잘 모르겠다. 아마 ANR(Adnroid No Response) 상황에서만 되는 것이 아닐 지 추측하고 있다.

Logcat 이용하기

로그캣(logcat) 이 buffer 에 있는 log message 들을 보여주기 때문에, 죽은 후에 buffer 에 log들이 남아있다. 이 buffer 의 내용을 logcat 을 이용해서 application 이 죽은 후에 긁어오면 된다.(log collector 등이 이런 방법을 사용한다.)

see also

logcat

안드로이드 로깅 시스템(android logging system) 은 system debug output 을 모으고, 보여주는 장치를 제공한다. logcat 은 buffer에 있는 system message 들의 로그를 dump 한다.

dump 된 로그 는 emulator 가 error 를 발생 시켰을 때의 stack trace 와 개발자가 Log class 를 이용해 작성한 log message 들을 가지고 있다.

android logging system 은 log message 를 위한 여러 개의 순환 버퍼(circular buffer)를 가지고 있다. 모든 log message 들이 default circular buffer(main log buffer) 로 가지지는 않는다.
adb logcat -b radio
adb logcat -b events
adb logcat -b main
처럼 -b option 을 사용해서 다른 circular buffer 를 확인할 수 있다.

참고로 android log 는 character device 에 write 하는데 3가지의 category 가 있다.[ref. 4]




  • /dev/radio
  • /dev/system,
  • /dev/events

References

  1. http://ecogeo.tistory.com/286
  2. logcat, Android developer documents
  3. Reading and Writing Logs, Android developer documents
  4. Android Log 분석, 2012년 1월

댓글 없음:

댓글 쓰기