Android 분석 팁.
system/core/include/cutils/log.h 파일 안에 선언되어 있죠
안드로이드 소스코드를 분석중에 LOG 관련 함수가 여러가지가 있는 것을 발견했습니다.
용도가 다를꺼라고 생각해서 한번 찾아봤는데 별다른 내용은 없고
다음과 같은 용도로 사용한다고 합니다.
For exemple, in a .cpp file, I added :
...
#define LOG_TAG "MyLogTag"
...
#include <utils/Log.h>
And then, I can use the following peace of code whereever I want to
trace something :
LOGV("This is a verbose message");
LOGD("This is a debug message");
LOGI("This is a information message");
LOGW("This is a warning message");
LOGE("This is a error message");
Then, using logcat, I am able to see those messages.
logcat 명령어로 LOG를 볼때 앞에 뜨는
W/, D/, I/, V/, /E 이런것이 이 로그의 종류를 나타냅니다.
D/MyLogTag ( 2003): HOHO############### LOGD----Camera::connect()
W/MyLogTag ( 2003): HOHO############### LOGW----Camera::connect()
I/MyLogTag ( 2003): HOHO############### LOGI----Camera::connect()
이런식으로 로그가 출력됩니다.
그런데 이상하게 V는 작동을 안하는군요. 왜 LOGV만 안보이는 것인지는 잘 모르겠네요.
아무튼 이런식으로 작동을 하는데 로그를 더 편리하게 찍을 수 있도록 개량을 해보도록 하겠습니다.
위에서 언급한 대로 system/core/include/cutils/log.h 파일의 100라인에
#ifndef LOGD
#define LOGD(...) ((void)LOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__, __FUNCTION__ , __LINE__))
#endif
이렇게 추가해주면 어떤 함수에서 로그를 찍었는지, 파일의 몇번째 라인인지 까지 출력됩니다.
D/Camera ( 2038): Ho__________ init(102): Ho__________ Camera::init()
위와같이 Camera 태그가 달린 connect 함수에서 찍었고 그 라인이 113 라인 이라는 뜻.
크크 이제 이 코드만 다 때려넣고 돌리면 어떤순서로 작동되는지가 다 나올겁니다. 음화화화
'Android' 카테고리의 다른 글
Android 보안 및 권한 (0) | 2009.09.09 |
---|---|
Android에서 말하는 금붕어(goldfish)가 뭘까. 해서 찾아본 글. (0) | 2009.08.02 |
안드로이드 커널 올리기 (0) | 2009.08.01 |