Android 분석 팁.

Android : 2009. 8. 3. 22:48
반응형
안드로이드에는 로그를 찍는 함수가 제공됩니다.
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__________ connect(113): Ho__________ Camera::connect()
D/Camera  ( 2038): Ho__________ init(102): Ho__________ Camera::init()

위와같이 Camera 태그가 달린 connect 함수에서 찍었고 그 라인이 113 라인 이라는 뜻.

크크 이제 이 코드만 다 때려넣고 돌리면 어떤순서로 작동되는지가 다 나올겁니다. 음화화화
반응형
Posted by Real_G