android - 如何根据墓碑中apk中的偏移量找到有问题的库
问题描述
我在我的 android 应用程序中的一个库中遇到问题。应用程序崩溃了,并且写了墓碑。现在应用程序正在使用一堆 c++ 库和一些第三方库。我遇到的问题是在墓碑中我看到这样的东西:
#00 pc 00042888 /system/lib/libc.so (tgkill+12)
#01 pc 00040489 /system/lib/libc.so (pthread_kill+32)
#02 pc 0001cb0f /system/lib/libc.so (raise+10)
#03 pc 00019cb1 /system/lib/libc.so (__libc_android_abort+34)
#04 pc 00017a64 /system/lib/libc.so (abort+4)
#05 pc 0001b723 /system/lib/libc.so (__libc_fatal+16)
#06 pc 00055e63 /system/lib/libc.so (ifree+202)
#07 pc 00058d43 /system/lib/libc.so (je_free+374)
#08 pc 0004c784 /system/priv-app/my-app/my-app.apk (offset 0x1b79000)
现在我已经设法获取了这个 apk 并将其提取出来,我普遍怀疑是哪个库通过日志中的这一行导致了这个问题:
F libc : Fatal signal 6 (SIGABRT), code -6 in tid 14556 (httpd)
我在日志中搜索了这个 tid,并从一些库中找到了一堆日志,具有相同的 tid。比我使用 addr2line 并在这个库中找到了一些方法,但我不是 100% 确定这是有效的方法。我想知道有什么办法可以连接这个从墓碑偏移的地址
(offset 0x1b79000)
到特定的库?在这种情况下,最佳做法是什么?谢谢
解决方案
推荐阅读
- javascript - 在 iOS Safari 上触发 PDF 文件的下载提示
- reactjs - 反应井字游戏
- javascript - 用我自己的键将对象转换为这种格式的对象数组?
- python - 如何使用“with”来改进脚本?
- java - 数据绑定:缺少带有 ID 的必需视图
- c - 在 ssh 中使用远程机器的输入作为我的 c 程序的输入
- angular - 从 Firebase 身份验证中删除用户
- rust - 如何编写一个不获取所有权(或不消耗)迭代器的函数?
- string - 替换字符串变量中的值 - Scala
- c - 我的 read_lines() 函数在调用时未按预期运行。有没有办法修复我当前的实现?