모의해킹/안드로이드 앱
ADB - logcat을 이용한 로그 분석
초코맛동산
2024. 5. 28. 11:59
1. logcat을 이용한 로그 분석
logcat: 안드로이드 장치에서 발생하는 *로그 메시지를 출력, 파일 형태로 저장하는 기능을 제공. 옵션과 필터링에 따른 일부 메시지도 확인할 수 있다.
형식: adb logcat [옵션] [filter] <- 명령프롬프트, 연결 장치의 쉘 프롬프트에서 명령 수행이 가능하며, 결과도 동일하다.
*로그 메시지: 시스템 운영 과정에서 발생하는 시스템 내용, 사용자의 활동 내용, 사건 등을 발생 시간과 함께 기록한 자료
1.1 태그와 우선순위
- 태그: 로그 메시지의 출처나 시스템 구성요소를 나타내는 식별자.
- 우선순위: 로그 메시지 맨 앞에 1개의 문자로 표시되며 로그 메시지의 심각도 수준을 나타내는 값
V | Verbose |
D | Debug |
I | Info |
W | Warning |
E | Error |
F | Fatal |
S | Silent |
(가장 낮은 순위(V) ~ 가장 높은 순위(S))
-> Error 수준의 BluetoothAdapter 태그를 갖는 항목에서 발생한 메시지를 출력하고 있는 로그
1.2 로그캣 옵션
옵션 | 설명 |
-b [buffer(radio/events/main)] | 로그 버퍼(radio, event, main) 의 내용을 로그 내용으로 확인 - radio: 라디오 및 통신 관련 로그가 저장됨. - event: 이벤트 관련 로그가 저장됨. -main: 일반 애플리케이션 로그가 저장된다. 주로 Log.v(), Log.d() 메서드를 사용하여 생성한 로그가 저장 |
-c | 기록된 로그 메시지를 삭제하고 종료. |
-d | 로그 메시지를 화면에 덤프하고 종료. |
-f [filename] | 로그 메시지를 지정한 파일 이름으로 저장. -d 옵션을 추가해야하며 추가하지 않을 시 작업 중단 신호가 입력될 때까지 로그 메시지를 기록한다. 파일 이름은 경로명 형태로 작성해야 한다. ex. adb logcat -d -f 경로/output.txt -b radio |
-g | 선택된 버퍼의 크기를 출력하고 종료. 디폴트 값으로는 main이 선택되어 있다. ex. adb logcat -g -b radio |
-n [count] | 저장되는 로그 파일의 개수를 지정. -r 옵션을 포함하여 로그 파일 용량을 설정하고, 파일 이름을 -f 옵션으로 설정해야 한다. 디폴트 값은 4이다. ex. adb logcat -n 5 -r 1024 -f 경로/filename |
-r [kbytes] | 저장되는 파일의 용량을 설정.(그래서 -f와 함께 쓰임.) 디폴트 값은 16 |
-s | 모든 우선순위 메시지를 조용히(silent) 시킨다. 옵션 뒤에 필터(태그: 우선순위)를 입력하면 원하는 특정 로그 메시지를 확인할 수 있다. ex. adb logcat -s ActivityManager:I -> ActivityManager 태그가 I 우선순위를 갖는 로그 메시지만 출력. |
-v [format] | 특정 메타데이터 필드를 선택하고, 해당 필드에 대한 로그 메시지를 출력. - brief : 로그 메시지의 우선순위/태그와 메시지가 발생한 프로세스의 PID를 출력 (디폴트 값) - process : 로그 메세지가 발생한 PID 출력 - tag : 로그 메시지의 우선순위/태그 출력 - raw : 로그 메시지의 원본 메시지만 출력 - time : 로그 메시지의 날짜, 호출 시간, 우선순위/태그, 메시지가 발생한 PID 출력 - threadtime : 로그 메시지의 날짜, 호출 시간, 우선순위/태그, 메시지가 발생한 PID, 스레드의 TID 출력 - long : 모든 메타데이터 필드와 메시지 표시를 가독성있게 출력 ex. adb logcat -v [brief/process/tag/raw/time/threadtime/long] |
1.3 로그 메시지 필터링
형식: [tag]:[priority]
- 설정한 priority를 기준으로 상위 우선순위를 갖는 메시지는 모두 출력한다.
adb logcat ActivityManager:I art:I *:S
-> ActivityManager와 art 태그 중 I 이상의 우선순위를 갖는 항목을 출력하고, 그 외의 모든 태그(*)에 관해서는 출력하지 않는다(silent)
#출처
교재:
안드로이드 모바일 앱 모의해킹. 조정원 외 4인 지음.