본문 바로가기

무언가 만들기 위한 지식/Java/Android

ADB logcat 사용법 및 예시



이번에는 ADB(Android Debug Bridge) 상에서 지원하는 기능 중, logcat 명령어에 대해서 알아봅시다.

아마도 일반 개발자의 경우, Eclipse내의 android Plug-in 중에서 DDMS(Dalvik Debuging Monitoring Service) 상에서 여러가지 목록들을 보실 수 있었을 꺼에요..


일반적으로는 요 DDMS로 확인하긴 하지만, 특수한 경우 도스창에서 ADB 명령어로 직접 받아와야할 때가 있습니다.

뭐 굳이 예를 들자면 LOG 결과 값들을 이용하여 뭔가 실시간으로 파싱하거나 데이터들로 통계를 만들때 등 말입니다.


그럴때는야 뭐, ADB를 이용해 명령을 수행하고 결과값들을 IO 버퍼에서 읽어와서 데이터 Class에 박아놓고 구미에 맞게 가공해서 화면에 뿌려주면 되는것이죠 ㅎㅎ


아무튼, 그 Logcat 명령어에 대한 짧은 이야기.


사용법은 간단합니다.


도스창에서 

adb logcat 또는 adb shell로 접근후에 logcat !

요렇게 하면 수많은 정보들이 우르르 쏟아지겠죠.


그럴땐, tag 옵션을 주면 됩니다.


저의 경우 로그 중에서도 Dalvik의 GC(Garbage Collector)의 정보만 확인하려고 했는데,

이럴때 쓰는건 다음과 같아요.


1) logcat -s dalvikvm:d

2) logcat dalvikvm:d *:S


위의 2개는 같은 명령입니다.

-s 옵션은 filter를 Default로 S로 설정한다는 이야기입니다.

여기서 알아야할 껀, 

 Verbose < Debug < Info < Warning < Error < Fatal < Silent

요 우선순위.

처음에는 꺽쇠 방향때문에 헷갈렸는데, 우측으로 갈수록 강한 순입니다.

Error랑 Fatal만 딱봐도 알겠죠? ㅎㅎ


그래서 뒤에 옵션을 *:S 일경우, Silent 이상만 출력한다는 의미.

따라서 왠만한 로그들은 나오지 않습니다.

*:V를 한다면 가장 낮은것 위를 모두 출력한다는 의미니 다 출력!


보통 앞에 원하는 부분을 필터링하기 때문에 Defult 의미인 -s을 씁니다.~!

dalvikvm:d는 출력되는 Debug명령들 중, tag명이 dalvikvm에 관련된 것만 출력되는걸 볼 수 있죠. ㅎㅎ


그리고 또 중요한게 출력형식.


-v 옵션을 통해 어떤식으로 출력해줄지 결정할 수 있습니다.


  • "adb logcat -v brief" - Display priority/tag and the PID of process issuing the message (the default format).
  • "adb logcat -v process" - Display PID only.
  • "adb logcat -v tag" - Display the priority/tag only.
  • "adb logcat -v raw" - Display the raw log message, with no other metadata fields.
  • "adb logcat -v time" - Display the date, invocation time, priority/tag, and PID of the process issuing the message.
  • "adb logcat -v thread" - Display the priority, tag, and the PID and TID of the thread issuing the message.
  • "adb logcat -v threadtime" - Display the date, invocation time, priority, tag, and the PID and TID of the thread issuing the message.
  • "adb logcat -v long" - Display all metadata fields and separate messages with a blank lines.



제가 필요한 정보는 보통 -v threadtime에서 해결됩니다. :)


요정도만 보통 사용하는데, 좀더 섬세히 다루고 싶다면,


-cClears (flushes) the entire log and exits.
-dDumps the log to the screen and exits.
-f <filename>Writes log message output to <filename>. The default is stdout.
-gPrints the size of the specified log buffer and exits.
-n <count>Sets the maximum number of rotated logs to <count>. The default value is 4. Requires the -roption.
-r <kbytes>Rotates the log file every <kbytes> of output. The default value is 16. Requires the -f option.
-sSets the default filter spec to silent.
-v <format>Sets the output format for log messages. The default is brief format. For a list of supported formats, see Controlling Log Output Format.


요걸 참고하시라!




공식 Reference는

http://developer.android.com/intl/ko/tools/debugging/debugging-log.html

요기서 확인이 가능하니 참고!




복잡하다면 걍 DDMS로 확인하시라 :)