Jak skutecznie debugować kod C zawinięty w JNI w Eclipse? (Android Dev)
Mam segfault, ale nie mam pojęcia, jak go zlokalizować.
Porady?
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" /
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:
-
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/
-
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.
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