Как я могу эффективно отлаживать код C, который упакован с JNI в Eclipse?(Android Dev) - PullRequest
14 голосов
/ 31 января 2011

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

Советы?enter image description here

Ответы [ 2 ]

10 голосов
/ 31 января 2011

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

Шаги выполняются на вики , но в основном вам нужно получить трассировку стека из 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, как вам нужно.

6 голосов
/ 09 февраля 2011

Как эффективно отлаживать код Android 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 очень хорошо работает как IDE для разработки JNI.

...