Digital Recipe

[디버깅] 안드로이드 NDK에서 Log 찍기 본문

프로그래밍/자바/안드로이드

[디버깅] 안드로이드 NDK에서 Log 찍기

노리터 2012. 9. 30. 00:13

이 디버깅 방법은 안드로이드 개발 시 NDK를 사용하는 경우 Log.d와 같은 문자열을 찍는 방법이다.

일반적인 printf(C언어)나 Log.d(안드로이드)를 사용할 수 없기때문에

다음과 같은 방법을 통해 C++에서 문자열을 찍어 디버깅을 수행할 수 있다. 


1. 환경 준비하기

1-1. 안드로이드 MAKEFILE 수정하기

안드로이드 MAKEFILE은 "Android.mk"이다. 이 파일을 열어서 "LOCAL_LDLIBS:= -llog"을 한 줄을 추가한다.


1-2. 헤더파일 추가하기

문자열을 출력할 파일에 "#include <android/log.h>"을 추가한다.


2. 문자열 출력하기

문자열을 출력할 부분에 "__android_log_print(ANDROID_LOG_DEBUG, "TAG", "Message")"을 추가한다.

ANDROID_LOG_DEBUG를 대신할 수 있는 옵션으로는 다음과 같다.

- ANDORID_LOG_UNKNOWN

- ANDROID_LOG_DEFAULT

ANDROID_LOG_VERBOSE

ANDROID_LOG_DEBUG

ANDROID_LOG_INFO

ANDROID_LOG_WARN

ANDROID_LOG_ERROR

ANDROID_LOG_FATAL

ANDROID_LOG_SILENT


TAG Message는 Log.d("TAG", "Message")와 같은 역할을 한다.

예를 들어 __android_log_print(ANDROID_LOG_DEBUG, "CHK", "Hello World")인 경우 Log.d("CHK", "Hello World"와 같다.)

혹은 특정 변수의 값을 출력해야 한다면 다음과 같이 출력이 가능하다.

예를 들어, INT형인 VAR라는 변수의 값을 출력해야 하는 경우

__android_log_print(ANDROID_LOG_DEBUG, "CHK", "This value is %d", VAR) 의 식으로 사용할 수 있다. 


[Reference]

01. http://blog.naver.com/jbin_k?Redirect=Log&logNo=130127879251



2012. 09. 30

Written by HoSeok Seo



Comments