이번에는 저번 글과 이어지는 부분이 있는데 시스템 파일로 저장된 크래시 로그 저장하는 방법에 대해 소개해보려 한다.
필요해진 배경
며칠동안 앱을 실행시켜두고 안전성 테스트를 하던 도중이었다.
그런데 갑자기 주말이 지나서 보니 앱이 죽어있던 것이 아닌가..
분명 어떤 이유에서인지 비정상 종료가 되었을 것인데 그 원인을 보고 싶어 검색해보게 되었는데,
안드로이드에서 크래시 로그를 파일로 저장하는 폴더가 있다고 해서 그 내부를 살펴보게 되었다.
목표물
안드로이드 시스템 내부에 tombstones 라는 폴더가 존재하는데 진짜 언어 그대로 죽은 이유를 적어둔 백트레이스를 가진 폴더이다.
내부를 확인해보니 "tombstone 0"과 같은 형식으로 tombstone에 숫자를 더한 형식의 이름을 가진 파일들이 있었고,
이 파일을 열어봐야했다.
방법
먼저 tombstones 라는 폴더를 열어봐야 한다.
이 폴더의 위치는 data 폴더인데 혹자는
그거 Android Studio에서 Device Explorer로 열면 되지 않나?
라고 할 것 같다.
일단 이 녀석은 루팅이 필요하다.
접근하는 명령어는 다음과 같다.
adb shell
su
cd /data/tombstones/
여기서 "su"는 다른 OS에서도 봤을 익숙한 명령어일텐데 이 명령어를 루팅되지 않은 디바이스에서 입력하면 아래처럼 에러가 나온다.
/system/bin/sh: su: inaccessible or not found
만약 루팅이 된 디바이스라면 다음 과정을 수행하면 된다.
exit
adb pull /data/tombstones/tombstone 0
먼저 shell을 나온 후, 0대신 본인이 원하는 순서의 파일을 가져오면 된다.
이 때, 나의 경우에는 이 명령어를 입력하면 Permission denied 에러가 났다.
그럼 어떻게 해결해야할까..
아래 명령어를 사용해보자.
adb shell
su
chmod 777 /data/tombstones/tombstone 0
exit
chmod 777이 어떤 명령어일까?
이 명령어는 해당 파일의 권한을 모든 사용자가 읽고 쓰고 실행할 수 있도록 변경한다.
만약 위 명령어를 따라 파일의 권한을 변경하고 shell을 나왔다면 다시 아래처럼 pull 명령어를 사용하면 된다.
adb pull /data/tombstones/tombstone 0
'Android' 카테고리의 다른 글
Android Change TextField Cursor Color (0) | 2024.03.13 |
---|---|
Android UrlQuerySanitizer getValue error (0) | 2024.02.06 |
Android ADB로 스크린샷 저장하기 (0) | 2024.02.01 |
Android TextClock format 지정하기 (1) | 2024.01.01 |
Android 14에서 경험한 버그 (0) | 2023.12.27 |