首页 > 解决方案 > 如何根据墓碑中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)

到特定的库?在这种情况下,最佳做法是什么?谢谢

标签: androidandroid-ndkaddr2line

解决方案


推荐阅读