2014-07-11 4 views
2

내 기본 안드로이드 애플리케이션에 문제가있어서 libc: Fatal signal 7 (SIGBUS) at 0x66f0001d (code=1), thread 30165 (xample.fft_test) 라고 생각합니다.이 문제는 기기 (nexus 4)의 메모리 문제입니다.Android NDK 애플리케이션 문제를 디버그

그래서이 문제의 원인을 알기 위해 응용 프로그램을 디버깅하려고했습니다. 일식에서

, 내가

그게 무슨 뜻 이죠 warning: Could not load shared library symbols for 94 libraries, e.g. /system/bin/linker. Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"? warning: Unable to find dynamic linker breakpoint function. GDB will retry eventurally. Meanwhile, it is likely that GDB is unable to debug shared library initializers or resolve pending breakpoints after dlopen(). 얻을?

여기 이클립스 또한 할당 추적기의 출력입니다 : 당신의 application.mk이 플래그를 가지고

enter image description here

+0

코드를 어떻게 컴파일합니까? Cmake 또는 Android.mk 사용? – vgonisanz

+0

with Android.mk – hanaa

+0

Application.mk에 플래그가 있습니다. APP_STL : = gnustl_static APP_OPTIM : = debug ???? – vgonisanz

답변

1

경우

APP_STL := gnustl_static 
APP_OPTIM := debug 

당신은 compilation's 플래그에 문제가 있습니다.

경고는 해당 라이브러리가 디버그 플래그로 컴파일되지 않았 음을 의미하므로 디버그 할 수 없도록 정보를 디버깅하지 않았습니다. 어쩌면 중단 점에서 멈추고 단계별로 진행할 수 있지만 변수의 값을 실시간으로 읽을 수는 없습니다.

따라서 문제를 해결하려면 디버그 정보 플래그를 사용하여 변수를 읽으려는 라이브러리를 다시 컴파일해야합니다. Cmake에서 나는 보통 -d 또는 -gdwarf-4 플래그를 사용하여 Android에서 크로스 컴파일합니다.

+0

이클립스에서 어떻게해야합니까? – hanaa

+0

Android.mk Eclipse와 동일한 경로 인 jni 폴더에 Application.mk를 추가하면 플래그를 사용하기 위해 ndk-build가 실행됩니다. – vgonisanz

-1

나는 동일한 문제가있어서 다른 전화를 사용하여 해결했습니다.

많은 휴대 전화에서 테스트되었습니다. 마지막으로, Nexus 6에서 NDK 디버그가 제대로 작동하는지 확인합니다.

따라서 일부 전화기에서는 NDK 디버깅 지원이 제거 된 것일 수 있습니다.