Как символизировать следы стека удаленной разделяемой библиотеки - PullRequest
0 голосов
/ 08 октября 2018

У меня есть отчет о сбое для моего приложения из сервисов Google Play, который выглядит следующим образом:

backtrace:
  #00  pc 00000000001b46a0  library.so
  #01  pc 0000000000604464  library.so
  #02  pc 0000000000c8ed1c  library.so

У меня также есть файл .map для library.so, который помогает мне находить имена функций и преобразовыватьstacktrace в более читаемый формат:

backtrace:
  #00  pc 00000000001b46a0  library.so  foo()
  #01  pc 0000000000604464  library.so  bar()
  #02  pc 0000000000c8ed1c  library.so  zoo()

Но ручное разрешение имен функций подвержено ошибкам, и это не дает мне номера строк - это исходный код, вызвавший сбой.

I 'При публикации новой версии мы рассматривали идею сохранения несжатой версии library.so, чтобы я мог использовать инструмент ndk-stack , но адреса функций AFAIK для двоичных и разорванных двоичных файлов различаются.

Так что мой вопрос: можно ли продолжать публиковать раздельные двоичные файлы и иметь средства для автоматической символизации трассировки стека с номерами строк?

Будем весьма благодарны за любые предложения

1 Ответ

0 голосов
/ 08 октября 2018

ndk-stack специально создан для этой цели, не волнуйтесь.Вы подаете на него необработанный library.so и получаете наилучшую трассировку стека, какую только можете достичь!

Убедитесь, что вы не смешиваете версии отладки / выпуска и сохраняете разорванную версиюдля каждого бинарного файла, который поступает в производство (или убедитесь, что вы можете надежно перестроить такую ​​несвязанную версию для соответствующего тега git).

...