Создать дамп ядра в Android - PullRequest
10 голосов
/ 31 мая 2011

Я разрабатываю приложение для Android, используя некоторые общие библиотеки, написанные мной и скомпилированные с ndk-r5b. Приложение работает, у и звонки в библиотеки тоже работает, но я обнаружил некоторые ошибки, ошибки сегментации, и мне нужно отладить его, но я не знаю, как отладить нативный код с Android, и я не знаю, смогу ли я генерировать дампы ядра, как в Linux, для отладки моих библиотек.

Есть идеи?

1 Ответ

5 голосов
/ 31 мая 2011

ndk поставляется с ndk-gdb, который предположительно позволяет отлаживать нативные приложения.Кроме того, если вы загрузите весь проект с открытым исходным кодом andriod, у них также будет некоторая версия gdb, используемая для отладки.Посмотрите в папке docs / ndk, чтобы узнать, как его использовать.Это руководство также может оказаться полезным: http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/

Однако, как показано в недавнем вопросе, который я задал: Запуск ndk-gdb с ошибкой пакета не найден на телефоне Motorola Я все еще не могузаставить его работать.

Редактировать: Вы сказали в комментариях, что используете устройство Samsung: Samsung решает разрушить некоторые из важнейших внутренних компонентов, необходимых для собственной отладки, но это легко исправить, если у вас есть root-доступк устройству.Если вы используете флаг --verbose, вы, вероятно, обнаружите, что ошибка отличается от этой, неизвестной ошибки пакета.Это потому, что он выглядит в /data/system/packages.list, но samsung переименовал этот файл в /dbdata/system/packages.list.Поэтому, если вы сделаете символическую ссылку на этот файл в /data/system/packages.list, (требуется доступ с правами root), он должен работать.Или, по крайней мере, так утверждает список рассылки ndk: http://osdir.com/ml/android-ndk/2011-03/msg00036.html

...