У меня есть кодовая база C ++, работающая на Android, и я хочу, чтобы пользователи отправляли отчеты о сбоях.
Я использую библиотеку ACRA , которая отлично работает для кода Java, но когда что-то происходитв нативном коде я не получаю достаточно информации.На самом деле я хотел бы получить трассировку стека вызовов собственных функций.Я знаю, что информация о сбое печатается в logcat после завершения моего процесса, и я могу настроить ACRA для чтения / отправки logcat.Я настроил свой код для обнаружения собственных сбоев, используя обработчики сигналов и обратный вызов Java для создания отчетов ACRA.Он также отлично работает.
Однако при таком подходе есть плохие временные рамки - ACRA читает журналы, пока процесс сбоя еще жив, а Android (не знаю, какая именно часть) записывает отчет о сбое в logcat после завершения завершившегося процесса.,Таким образом, я не получаю трассировки стека при использовании ACRA.
Поэтому я ищу способ программно прочитать текущую трассировку стека из кода C ++ и передать эту информацию в 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
Есть ли способ получить эту трассировку стека из моего кода?