Как я могу эффективно отлаживать код C, который обернут JNI в Eclipse? (Android Dev)

У меня есть segfault, но я не знаю, как его найти.

Советы? Введите описание изображения здесь

Вы можете получить местоположение функции C, вызвавшей сбой, с помощью анализатора Android NDK Stacktrace .

Шаги в вики , но в основном вам нужно получить трассировку стека от logcat в файл ( adb logcat > mycrash.log ), затем выгрузить вашу библиотеку в текстовый файл, а затем запустить программу на двух из них. Вот сценарий оболочки, который я использую для выполнения задания:

 #!/bin/sh if test $# -lt 2 ; then echo "Extract readable stack trace from Android logcat crash" echo "Usage $0 lib.so crash.log" exit 1 fi of=$(mktemp) echo "Disassemble $1" ~/tools/android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-objdump -S $1 > $of echo "Parse stack trace in $2" ~/bin/parse_stack.py $of $2 

Измените пути к файлу Android NDK и parse_stack.py по мере необходимости.

Как эффективно отлаживать код JNI для C ++ C ++ в Eclipse:

  1. Настройте проект на смешанный проект Java, C и C ++:

    http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

  2. Настройте свой проект, чтобы включить отладку:

    http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/#more-23

Примечание. Автор сайта использовал Eclipse (Galileo) на Ubuntu. Я обнаружил некоторые отличия при использовании Eclipse (Helios) на MacOS (особенно с настройкой отладки). Когда все настроено, Eclipse отлично работает как среда разработки JNI.

Intereting Posts