Jak skutecznie debugować kod C zawinięty w JNI w Eclipse? (Android Dev)

Mam segfault, ale nie mam pojęcia, jak go zlokalizować.

Porady? Tutaj wpisz opis obrazka

Author: Brian D, 2011-01-30

2 answers

Możesz uzyskać lokalizację funkcji C, która spowodowała awarię za pomocą Android NDK Stacktrace Analyzer .

Kroki są na wiki , ale w zasadzie musisz pobrać ślad stosu z logcat do pliku (adb logcat > mycrash.log), następnie zrzucić bibliotekę do pliku tekstowego, a następnie uruchomić program na obu z nich. Oto skrypt powłoki, którego używam do tego wszystkiego:

#!/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

Zmień ścieżki do Android NDK i parse_stack.py / align = "left" /

 10
Author: richq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-31 20:19:08

Jak skutecznie debugować Kod Androida JNI C / C++ w Eclipse:

  1. Skonfiguruj swój projekt tak, aby był mieszanym projektem Java, C i C++:

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

  2. Skonfiguruj swój projekt, aby włączyć debugowanie:

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

Uwaga: autor strony użył Eclipse (Galileo) na Ubuntu. Znalazłem pewne różnice, gdy korzystanie z Eclipse (Helios) Na MacOS (szczególnie z konfiguracją debugowania). Po skonfigurowaniu Eclipse działa bardzo dobrze jako IDE dla JNI development.

 6
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55