Android:NDK:Troubleshooting
NDK사용중 발생할 수 있는 문제점에 대한 설명.
NDK Note: The Mangling of 'Va_list' Has Changed in GCC 4.
- http://www.zhigang.net/2012/11/ndk-note-mangling-of-valist-has-changed.html
- See also: gcc_commandline_options.
아래와 같은 메시지를 컴파일 빌드시 발견 할 수 있을 것이다.
In file included from jni/fskmodule.cpp:7:0:
/xxxx/usr/include/jni.h:592:13: note: the mangling of 'va_list' has changed in GCC 4.4
이와 같은 현상을 해결하기 위해서 Android.mk 파일에 아래의 플래그를 추가하면 된다.
Fatal signal 11 (SIGSEGV)
안드로이드 LogCat에서 아래와 같은 로그가 나타날 수 있다.
-
libc: strlen(), sprintf(),...
등등의 C standard library를 구현한 라이브러리 -
signal 11 (SISSEGV) - Segmentation Violation
의 약자로 잘못된 메모리 참조 -
at 0x0000000 - 0x00000
메모리 번지를 참조함
즉, [[JNI]측 코드에서 strlen 등의 Standard C함수호출시 파라미터가 NULL이 넘어가서 NULL을 참조하려다 난 오류일 가능성이 높다. 참고로, 로그를 잘 보면 C코드의 Stack도 확인할 수 있다.