Как я могу заставить Android распечатывать дампы ядра для сбоя системных приложений? - PullRequest
3 голосов
/ 23 июня 2011

Я пишу кое-что в удивительном мире системных библиотек, и у меня возникают сбои в libc, которые моя библиотека, очевидно, передает неверные значения.

Можно ли как-нибудь заставить Android сгенерировать дамп ядра для сбойного приложения, чтобы я мог разложить стек приложений?

В частности, я вызываю сбой system_server, если это помогает.

РЕДАКТИРОВАТЬ: Суть моей проблемы заключается в следующем: когда происходит сбой приложения в библиотеке, такой как libc, тогда надгробный камень, который получает выходные данные, показывает трассировку стека в libc.Если бы у меня была полная трассировка стека, я мог бы отлаживать все приложение.

1 Ответ

3 голосов
/ 23 июня 2011

Я полагаю, вы пишете код NDK (C / C ++)?Если это так, проверьте вывод logcat на наличие трассировки стека.Если у вас есть соответствующий файл отладки, вы можете запустить его с помощью инструмента трассировки стека, например: http://code.google.com/p/android-ndk-stacktrace-analyzer/wiki/Usage.

Трассировки logcat сохраняются в Tombstones, см. Этот пост: http://crazydaks.com/debugging-in-android-with-tombstones.html.

В случае сбоев в libc.so вы можете попробовать запустить arm-eabi-objdump и arm-eabi-addr2line для команды so и сравнить адреса, чтобы увидеть, где произошел сбой.

...