当系统崩溃时,它会在 /data/tombstone 中留下一个 tombstone 文件。我找到了一堆地址如下。
#00 pc 00010a20 /system/lib/libc.so
#01 pc 0000b332 /system/lib/libc.so
#02 pc 0000ca62 /system/lib/bluez-plugin/audio.so
#03 pc 0000d1ce /system/lib/bluez-plugin/audio.so
#04 pc 0000e0ba /system/lib/bluez-plugin/audio.so
让我们假设有一个由 address 引起的麻烦0000e0ba /system/lib/bluez-plugin/audio.so
。
我使用'add2line'来查看哪一行让它变得如此糟糕。
{TOOL_CHAIN}/arm-linux-androideabi-addr2line -f -e android/{OUT}/target/product/{PRODUCT}/symbols/system/lib/bluez-plugin/audio.so 0000e0ba
它显示了造成麻烦的代码中的特定行。
这是问题。我真的不明白 PC 在墓碑中的地址是如何在每次运行时直接与其 .so 的地址匹配的。显然这是在系统死机后(事后)调试,这意味着手机的电源已经关闭。
我是否应该认为动态库(.so)即使在重新启动后也总是加载到 RAM 中的相同地址中?