прежде чем я скажу что-нибудь еще, позвольте мне начать с заявления о том, что программное обеспечение совершенно нормальное, оно взято из примеров Android и не вылетает:).
Моя команда изо всех сил пыталась получить вменяемыйследы от андроида в последнее время.Мы получаем выходные данные из LibC и ... кажется, что это единственный компонент, от которого мы получаем действительные обратные следы.Что-нибудь еще генерирует только вопросительные знаки и неглубокие следы (так что обычно оно ломается сначала ?? , больше ничего не показывается после этой точки, поэтому мы обычно видим - например - только vsnprintf и... вот и все.
Мы экспериментировали и в итоге создали совершенно новый проект, почти полностью скопированный из образцов: native-activity, с несколькими изменениями:
В AndroidManifest.xml установлены правильные флаги:
<application android:label="@string/app_name"
android:hasCode="false" android:debuggable="true" >
build.xml имеет правило предварительной сборки:
<target name="-pre-build">
<exec executable="${env.ANDROID_NDK}/ndk-build" failonerror="true">
<arg value="NDK_DEBUG=1" />
</exec>
</target>
Application.mk имеет определение:
APP_OPTIM := debug
даже Android.mk Файл был немного подправлен:
LOCAL_MODULE := test
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_CFLAGS := -g3 -ggdb -O0
LOCAL_CPPFLAGS := -g3 -ggdb -O0
include $(BUILD_SHARED_LIBRARY)
мы экспериментировали с -gstabs+
и -g -ggdb
, но это все равно дает нам ту же обратную трассировку:
(gdb) bt
#1 0x4005b384 in epoll_wait () from libc.so
#2 0x40120eaa in ?? ()
второй вызов - без сомнения - нативный код, скорее всегоALooper_pollAll
, который вызывает libc epoll_wait
., Но нет ссылки на android_main
.
Код отлично хорошо.Я могу нажать c и дать ему поработать часами без сбоев, но остановив его и напечатав обратную трассировку - независимо от того, когда - всегда возвращаются одни и те же две строки.
Мы будем очень признательны за любую помощьи предложения;у нас возникли проблемы с нашим продуктом, и ... единственное, о чем мы можем сейчас думать, это по-настоящему средневековое.