Debugowanie kodu NDK C / C ++ na Androida w Eclipse - punkty przerwania nie są trafiane
Pobrałem pakiet Android SDK dla systemu Linux i Android NDK. ADT został zainstalowany, zainstalowałem CDT.
Stworzyłem projekt na Androida i dodałem natywną obsługę (jni). Następnie napisałem natywną funkcję w kodzie java, która eksportuje w kodzie c ++. W kodzie c ++ zdefiniowałem tę funkcję.
Kod Java:
static {
System.loadLibrary("test");
}
private native String get_text_from_cpp();
kod c ++ (h):
extern "C"{
JNIEXPORT jstring JNICALL Java_com_example_test_MainActivity_get_1text_1from_1cpp(JNIEnv *, jobject);
}
kod c ++ (cpp):
JNIEXPORT jstring JNICALL Java_com_example_test_MainActivity_get_1text_1from_1cpp(JNIEnv * env, jobject){
return env->NewStringUTF( "hello from C++" );
}
Kod działa bez błędów. Ale kiedy ustawiam punkt przerwania w kodzie c ++, nie jest on trafiany.
build-nkd NDK_DEBUG = 1 - są uwzględnione
Przestrzegałem tej instrukcjihttp://tools.android.com/recent/usingthendkplugin
Android.mk w jni / has LOCAL_CFLAGS: = -g
Przeczytałem bardzo dużo informacji, ale nie mogłem dostosować Eclipse. Proszę, pomóżcie komukolwiek.
PS: Przykro mi, że mój angielski nie jest moim językiem ojczystym. Mam trudności na piśmie.
Dodaj: Również podczas debugowania w pokazach konsoli: „ostrzeżenie: Nie można załadować symboli biblioteki współdzielonej dla 95 bibliotek, np. / System / bin / linker. Użyj polecenia„ info sharedlibrary ”, aby wyświetlić pełną listę. Czy potrzebujesz„ ustawić solib- search-path "lub" set sysroot "? warning: Nie można znaleźć dynamicznej funkcji punktu przerwania linkera. GDB będzie ponawiał próbę. W międzyczasie jest prawdopodobne, że GDB nie jest w stanie debugować inicjatorów współdzielonej biblioteki ani rozwiązywać oczekujących punktów przerwania po dlopen ()."