У меня есть С++ codebase, работающая на Android, и вы хотите иметь отчеты о сбоях, отправленные пользователями.
Я использую библиотеку ACRA, которая отлично работает для Java-кода, но когда что-то сбой в собственном коде, я не получаю достаточно Информация. На самом деле я бы хотел получить трассировку стека вызовов собственных функций. Я знаю, что информация о сбоях печатается в logcat после завершения моего процесса, и я могу настроить ACRA для чтения/отправки logcat. Я установил свой код, чтобы обнаружить собственный сбой с помощью обработчиков сигналов и перезвонить на Java для отчетности ACRA. Он отлично работает.
Однако с этим подходом нет плохого времени - ACRA читает журналы, а процесс сбоя все еще жив, а Android (не знаю точно, какая часть) записывает отчет о сбое в logcat после того, как разбитый процесс полностью завершается. Таким образом, я не получаю трассировки стека при использовании ACRA.
Итак, я ищу способ программно считывать текущую трассировку стека из кода на С++ и самостоятельно передавать эту информацию в ACRA (или, возможно, другой инструмент отчетов о сбоях).
Все, что мне нужно, это какой-то отчет, написанный для logcat:
10-10 08:29:13.868: INFO/DEBUG(1121): #00 pc 0003fc7c /data/data/com.ex.lib/libapp.so
10-10 08:29:13.891: INFO/DEBUG(1121): #04 pc 00016df4 /system/lib/libdvm.so
10-10 08:29:13.891: INFO/DEBUG(1121): #05 pc 00045284 /system/lib/libdvm.so
10-10 08:29:13.899: INFO/DEBUG(1121): #15 pc 00047c56 /system/lib/libdvm.so
10-10 08:29:13.922: INFO/DEBUG(1121): #16 pc 00030e4c /system/lib/libandroid_runtime.so
Есть ли способ получить эту трассировку стека из моего кода?