У меня есть приложение, которое в основном представляет собой собственный код, написанный на C: Simon Tatham's Пазлы . Когда я обнаруживаю сбой (с помощью обработчика сигналов), трассировка Java сообщит мне только смутную область проблемы:
W System.err: at name.boyle.chris.sgtpuzzles.SGTPuzzles.resizeEvent(Native Method)
W System.err: at name.boyle.chris.sgtpuzzles.SGTPuzzles$1.handleMessage(SGTPuzzles.java:126)
W System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
Что мне нужно, чтобы иметь хоть какую-то надежду на диагностику, - это собственная трассировка что платформа Android записывает в журнал:
I DEBUG : #02 pc 0003e8ae /data/data/name.boyle.chris.sgtpuzzles/lib/libpuzzles.so
I DEBUG : #03 pc 0003ed62 /data/data/name.boyle.chris.sgtpuzzles/lib/libpuzzles.so
I DEBUG : #04 pc 00059060 /data/data/name.boyle.chris.sgtpuzzles/lib/libpuzzles.so
Насколько мне известно, отчеты о сбоях Android Market не содержат собственных трассировок ... не так ли?
Таким образом, в настоящее время у меня есть собственный сборщик сбоев и репортер, описанный в предыдущем вопросе , в котором вам будет предложено перетащить вас в окно создания электронного письма с вашим логином в нем.Это работает достаточно хорошо, но с одной проблемой: пользователи не читают (или не верят) объяснение в описании пакета и пугаются запроса разрешения.
Меня беспокоят не эти несколько комментариев, а неизвестное количество людей, которые убежали, даже не установив его. : - (
Итак как мне получить встроенную обратную трассировку при сбое, не заставляя игру требовать разрешения ужасно выглядящих журналов? Возможные решения включают:
backtrace ()
. Изменить: Большинство вещей, находящихся здесь, по-видимому, необходимы: http://github.com/android/platform_system_core/tree/master/ debuggerd - включение его в проект в достаточном количестве было бы излишним, раздутым, сложным, неподдерживаемым, ненадежным при изменениях / дополнениях ABI. Это похоже на хорошее использование времени.