Digital Recipe
[디버깅] 안드로이드 NDK에서 Log 찍기 본문
이 디버깅 방법은 안드로이드 개발 시 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