모의해킹/안드로이드 앱

ADB - logcat을 이용한 로그 분석

초코맛동산 2024. 5. 28. 11:59

1. logcat을 이용한 로그 분석

logcat: 안드로이드 장치에서 발생하는 *로그 메시지를 출력, 파일 형태로 저장하는 기능을 제공. 옵션과 필터링에 따른 일부 메시지도 확인할 수 있다. 

형식: adb logcat [옵션] [filter]  <- 명령프롬프트, 연결 장치의 쉘 프롬프트에서 명령 수행이 가능하며, 결과도 동일하다. 

 

 

*로그 메시지: 시스템 운영 과정에서 발생하는 시스템 내용, 사용자의 활동 내용, 사건 등을 발생 시간과 함께 기록한 자료

 

1.1 태그와 우선순위

  1. 태그: 로그 메시지의 출처나 시스템 구성요소를 나타내는 식별자.
  2. 우선순위: 로그 메시지 맨 앞에 1개의 문자로 표시되며 로그 메시지의 심각도 수준을 나타내는 값
V Verbose
D Debug
I Info
W Warning
E Error
F Fatal
S Silent

(가장 낮은 순위(V) ~ 가장 높은 순위(S))

 

E BluetoothAdapter: Bluetooth binder is null

-> 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인 지음.