본문 바로가기

카테고리 없음

에이징 테스트를 위한 Android 로그 로컬에 저장하기

320x100

안녕하세요? 엘카입니다.

대기업 제품들의 경우 문제 발생 시 로그 시스템이 자동으로 쌓여있는 기법을 적용해 놓고 있습니다.


하지만 중소기업 제품에서 그런 시스템 구축은 거의 된 걸 못 봤습니다.

이로 인해 장시간 시스템 반복 테스트 시에 화면 멈춤현상 HALT 발생 시 로그도 제대로 쌓이지 않아 디버깅 하기 너무 힘든 경우가 생길 수 있습니다.


"안 생길 것 같죠?? 저도 그런 줄 알았어요."


몇달 고생해서 ADB 로그가 AP 멈출 때 까지 최대한 많이 쌓는 방법을 고심해 봤습니다.

제가 개발중인 시제는 절전진입 시 ADB가 끊어집니다. 그래서 기존 Logcat을 개발PC나 노트북에 저장하는 기능들은 가볍게 무시되어, 결국 단말에 자체에 저장을 하도록 기능을 고려했습니다. 이게 PC연결보다 시스템 죽기 직전까지 로그를 더 쌓는 기분이 들더군요. 





저장가능한 로그


    • kmsg (커널 메세지)
    • main
    • radio
    • system
    • events

이정도면 왠만한 디버깅 됩니다. 그리고 보기 좋게 시간출력 되게 했습니다.




사용방법 소개



아래의 명령어를 Putty 또는 Windows command 창을 통해 입력하시기 바랍니다.

제 개발환경은 좀 오래된 Android 입니다. ㅎㅎ;;

- Android ICS 4.0.4 버전입니다.


0) 시작 전에 ADB 이용하여 Shell에 접속을 한 상태에서 진행해야 합니다.

Windows Command 창에서 아래의 명령어를 입력합니다.

adb shell



1) log를 저장할 접근 제한이 없는 곳에 디렉토리를 만듭니다.

mkdir /mnt/sdcard/logbox


2) 아래의 명령어를 그대로 카피 후 붙여다 실행합니다.

cat /proc/kmsg > /mnt/sdcard/logbox/kernel.log & logcat -v time -b main > /mnt/sdcard/logbox/main.log & logcat -v time -b system > /mnt/sdcard/logbox/system.log & logcat -v time -b events > /mnt/sdcard/logbox/events.log & logcat -v time -b radio > /mnt/sdcard/logbox/radio.log &


3) 아래 명령을 실행하면 5개의 파일이 생성되어, 사이즈가 증가되는 것을 확인할 수 있습니다.

ls /mnt/sdcard/logbox


[주의사항] 해당 명령어는 반드시 Putty, CMD 를 이용하여, 원격 터미널창에서 입력해야 합니다.

BAT 등의 배치파일 만들어서 실행 시 해당 창 닫으면 로그 수집도 바로 멈춥니다. 




유용한 정보가 되길 바랍니다.

해당 기능을 통해 고생하던 문제 해결 실마리를 찾아서 유용한 듯 하여, 공유 합니다.

반응형